လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Sprintf နှင့်ရောင်ပြန်ဟပ်မှုအလိုအလျောက် format ကိုအောင်မြင်ရန်

Sprintf နှင့်ရောင်ပြန်ဟပ်မှုအလိုအလျောက် format ကိုအောင်မြင်ရန်

gitbox 2025-04-28

နေ့စဉ်ဖွံ့ဖြိုးတိုးတက်မှုအတွက် strintf function ကို formating andimal points နှင့်အတူ output metuals aligning ကို format လုပ်ရန် sprintf function ကိုသုံးလေ့ရှိသည်။

PHP ၏ ရောင်ပြန်ဟပ်မှု API သည် Runtime ရှိအတန်းများ, ဂုဏ်သတ္တိများနှင့်နည်းလမ်းများကိုခွဲခြမ်းစိတ်ဖြာရန်ယန္တရားတစ်ခုပေးသည်။ Sprintf ၏အင်အားကြီးသောပုံစံချသည့်စွမ်းရည်များနှင့်ပေါင်းစပ်ပြီး, ကျွန်ုပ်တို့သည် Attrotations သို့မဟုတ် Naming စည်းဝေးကြီးများတွင်အခြေခံသည့်အရာ 0 တ်ထုများကို format လုပ်ခြင်းနှင့်ထုတ်လုပ်နိုင်သောအရာဝတ်ထုများကိုအကောင်အထည်ဖော်နိုင်သည်။

ရည်မှန်းချက်အောင်မြင်ရန်

အောက်ပါအကျိုးသက်ရောက်မှုများကိုကျွန်ုပ်တို့အောင်မြင်လိုသည်။

 $user = new User('Alice', 5, 1234.5678);
echo AutoFormatter::format($user);

ရလဒ်ရလဒ်မှာ -

 Name: Alice     | Level: 005 | Balance: $1234.57

format ကို format နှင့် format function အတွက် hard-coded ထက် clunt-coded ထက် class ကိုရဲ့အဓိပ္ပါယ်ကဆုံးဖြတ်သည်။

အဆင့် 1: အတန်းဖော်ပြချက်ဖြင့်အတန်းကိုသတ်မှတ်ပါ

ကျွန်ုပ်တို့သည် PHP 8 attribute များကို အတန်း၏ attribute များသို့ထည့်သွင်းရန်ညွှန်ကြားချက်များကိုထည့်ရန်အသုံးပြုသည်။

 #[Attribute]
class Format {
    public function __construct(public string $format) {}
}

class User {
    #[Format('%-10s')] // aligned left,လက်ရှိယူထား10မြင်းဇက်ကြိုး
    public string $name;

    #[Format('%03d')] // ကိန်း,မှသုညဖြည့်3မြင်းဇက်ကြိုး
    public int $level;

    #[Format('$%.2f')] // 保留两မြင်းဇက်ကြိုး小数,နှင့်ဒေါ်လာနိမိတ်လက်ခဏာကိုထည့်ပါ
    public float $balance;

    public function __construct($name, $level, $balance) {
        $this->name = $name;
        $this->level = $level;
        $this->balance = $balance;
    }
}

အဆင့် 2 - အလိုအလျောက်ပုံစံပြုပါ

ကျွန်ုပ်တို့သည်ရောင်ပြန်ဟပ်မှုသည်ဂုဏ်သတ္တိများကိုဖတ်ရန်, 4 င်းတို့၏သက်ဆိုင်ရာပုံစံများ,

 class AutoFormatter {
    public static function format(object $obj): string {
        $refClass = new ReflectionClass($obj);
        $values = [];
        $formats = [];

        foreach ($refClass->getProperties() as $prop) {
            $prop->setAccessible(true);
            $value = $prop->getValue($obj);

            $attrs = $prop->getAttributes(Format::class);
            if (!empty($attrs)) {
                $formatAttr = $attrs[0]->newInstance();
                $formats[] = $formatAttr->format;
                $values[] = $value;
            }
        }

        $formatString = implode(' | ', $formats);
        return sprintf($formatString, ...$values);
    }
}

အဆင့် 3: Effect သရုပ်ပြမှုကိုသုံးပါ

 $user = new User('Alice', 5, 1234.5678);
echo AutoFormatter::format($user);
// ထုတ်လုပ်ခြင်း:Name: Alice     | Level: 005 | Balance: $1234.57

Web interface တွင်သင်လျှောက်ထားလိုပါကပုံစံချခြင်းရလဒ်ကိုပြန်ပို့ရန်လိုအပ်သည်။

 header('Content-Type: text/plain');
echo AutoFormatter::format(new User('Bob', 42, 98765.4321));

သစ်ထုတ်လုပ်ခြင်း, template rendering သို့မဟုတ် api တုံ့ပြန်မှုအတွက်ဤပုံစံများကိုလည်းသင်အသုံးပြုနိုင်သည်။ ဥပမာအားဖြင့်:

 file_put_contents('https://gitbox.net/logs/user.log', AutoFormatter::format($user), FILE_APPEND);

အကျဉ်းချုပ်

PHP ၏ Sprintf နှင့် ရောင်ပြန်ဟပ်မှုကို ပေါင်းစပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည် application code မှအဆင့်မြှင့်တင်ထားသောအလိုအလျှောက် formatic format လုပ်ခြင်းလုပ်ငန်းများကိုအောင်မြင်ရန် application code မှဖြည့်ဆည်းပေးနိုင်သည်။ ၎င်းသည် Code ကိုပိုမိုကြော့ရှင်းစေရုံသာမကအနာဂတ် format ကိုပြောင်းလဲခြင်းအတွက်အလွန်အဆင်ပြေသည်။

ဤနည်းလမ်းသည်သစ်ထုတ်လုပ်ခြင်း, တင်ပို့ခြင်းနှင့်အစီရင်ခံခြင်းစသည့်အခြေအနေများအတွက်အထူးသဖြင့်သင့်တော်သည်။