နေ့စဉ်ဖွံ့ဖြိုးတိုးတက်မှုအတွက် 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 ကိုရဲ့အဓိပ္ပါယ်ကဆုံးဖြတ်သည်။
ကျွန်ုပ်တို့သည် 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;
}
}
ကျွန်ုပ်တို့သည်ရောင်ပြန်ဟပ်မှုသည်ဂုဏ်သတ္တိများကိုဖတ်ရန်, 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);
}
}
$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 ကိုပြောင်းလဲခြင်းအတွက်အလွန်အဆင်ပြေသည်။
ဤနည်းလမ်းသည်သစ်ထုတ်လုပ်ခြင်း, တင်ပို့ခြင်းနှင့်အစီရင်ခံခြင်းစသည့်အခြေအနေများအတွက်အထူးသဖြင့်သင့်တော်သည်။