PHP တွင် stream သည် files, network connection များ, memor data data စသည့်အချက်အလက်များကဲ့သို့သောအချက်အလက်အမျိုးမျိုးကိုပြုလုပ်ရန်ခွင့်ပြုသည့်အလွန်အစွမ်းထက်။ ပြောင်းလွယ်ပြင်လွယ်သည့်လုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ အချက်အလက်များစွာစာဖတ်ခြင်း, ဤလုပ်ငန်းများ၌ stream_get_filters နှင့် stream_wropper_register functions များသည် Custom Stram Studding လုပ်ဆောင်ချက်များကိုအကောင်အထည်ဖော်ရန်သော့ချက်များဖြစ်သည်။ ဤဆောင်းပါးသည်ဤလုပ်ဆောင်ချက်နှစ်ခုပေါင်းစပ်ခြင်းဖြင့်ထုံးစံ stram studing လုပ်ဆောင်မှုများကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုအသေးစိတ်မိတ်ဆက်ပေးပါမည်။
PHP တွင် stream filter များကသင့်အားစာမဖတ်မီအချက်အလက်များကိုပြုပြင်ရန်ခွင့်ပြုသည်။ text encoding, encryption နှင့် decryption, data compression နှင့် data format များပြောင်းလဲခြင်းကဲ့သို့သောလုပ်ငန်းများကို stream filter များကိုကိုင်တွယ်ရန်အသုံးပြုနိုင်သည်။ PHP သည် string.toupper ကဲ့သို့သော built-in stream filters များစွာကိုထောက်ပံ့ပေးသည်။
Stream_get_Filters function ကိုလက်ရှိရရှိနိုင်သည့် filter များစာရင်းကိုပြန်ပို့ရန်အသုံးပြုသည်။ မည်သည့် stream filter များကိုဤလုပ်ဆောင်မှုမှတစ်ဆင့် system တွင်မည်သည့် system တွင်ထောက်ပံ့ထားကြောင်းစစ်ဆေးနိုင်သည်။ ထို့နောက်သင်၏စီးသို့လျှောက်ထားရန်သင့်လျော်သော filter ကိုရွေးချယ်ပါ။
array stream_get_filters(void)
ဤလုပ်ဆောင်ချက်သည်လက်ရှိမှတ်ပုံတင်ထားသောစစ်ထုတ်သည့်အမည်များအားလုံးပါ 0 င်သည့်ခင်းကျင်းမှုတစ်ခုရရှိစေသည်။
$filters = stream_get_filters();
print_r($filters);
ဤကုဒ်သည်လက်ရှိထောက်ပံ့ထားသော stream filters အားလုံး၏အမည်များကိုထုတ်ပေးသည်။
stream_wraper_register function ကိုထုံးစံ stream wrapper ကိုမှတ်ပုံတင်ရန်အသုံးပြုသည်။ ဤလုပ်ဆောင်မှုဖြင့် PHP သည်သတ်သတ်မှတ်မှတ်စစ်ဆေးမှုများကိုကိုင်တွယ်နိုင်ရန်စိတ်ကြိုက် protocol တစ်ခုကိုဖန်တီးနိုင်သည်။ Custom Stream Wrappers များကိုသင်အပြည့်အဝစိတ်ကြိုက် data processing flow ကိုဖန်တီးရန် Stream Filters ဖြင့်အသုံးပြုနိုင်သည်။
bool stream_wrapper_register ( string $protocol , string $classname )
$ protocol : ဖိုင် , http စသဖြင့်မှတ်ပုံတင်ခံရမည့် protocol name ကိုမှတ်ပုံတင်ရမည်။
$ classname : streamwraper interface ကိုအကောင်အထည်ဖော်မည့်အတန်းအစားအမည်။
class MyStreamWrapper {
// ထုံးစံ stream အပြောင်းအလဲနဲ့ယုတ္တိဗေဒကိုအကောင်အထည်ဖော်ပါ
}
stream_wrapper_register("myprotocol", "MyStreamWrapper");
အပေါ်ကဥပမာမှာ protocol ကို My MyProtocol လို့ခေါ်တဲ့ protocol ကို မှတ်ပုံတင်ပြီး, ယခုအချိန်တွင် MyProtocol ဖြင့်စတင်သော URLs အားလုံး - // ကို MyChreamwapper အတန်းသို့ပြောင်းလဲခြင်းကိုလွှဲပြောင်းပေးလိမ့်မည်။
stream_get_filters နှင့် stream_wrapper_register ကို အသုံးပြုခြင်းသည်တိကျသောလိုအပ်ချက်များနှင့်ကိုက်ညီစေရန်အတွက် stream stream process တွင် stream filems များကိုရှာဖွေနိုင်သည်။
ကျွန်ုပ်တို့သည်စိတ်ကြိုက်ခင်း protocol protocol protocol ကို ဖန်တီးရန်လိုအပ်ပြီး၎င်းတွင်စမ်းချောင်းကိုအသုံးပြုပါ။ ကျနော်တို့အောက်ပါအတိုင်းလုပ်နိုင်ပါတယ်:
class MyStreamWrapper {
private $stream;
public function stream_open($path, $mode, $options, &$opened_path) {
// ပွင့်လင်းစီး
$this->stream = fopen($path, $mode);
return $this->stream !== false;
}
public function stream_read($count) {
return fread($this->stream, $count);
}
public function stream_write($data) {
return fwrite($this->stream, $data);
}
public function stream_close() {
fclose($this->stream);
}
}
// စိတ်ကြိုက် stream wrapper မှတ်ပုံတင်ပါ
stream_wrapper_register("myprotocol", "MyStreamWrapper");
// စီးဆင်းမှု filter ကိုအသုံးပြုခြင်း
$filters = stream_get_filters();
if (in_array('string.toupper', $filters)) {
stream_filter_append($this->stream, 'string.toupper');
}
// စိတ်ကြိုက် protocol ဖိုင်ကိုဖွင့်ပါ
$file = fopen("myprotocol://example.txt", "r+");
$content = fread($file, 100);
echo $content;
fclose($file);
အထက်ပါဥပမာတွင် My MyProtocol ဟုခေါ်သောစိတ်ကြိုက်ခင်း protocol ကိုဖန်တီးပြီး string.toupper stream filter ကိုရရှိနိုင်မည်လားစစ်ဆေးရန် Promeam_get_Filters များကို စစ်ဆေးရန်ကျွန်ုပ်တို့ဖန်တီးခဲ့သည်။ အကယ်. ရရှိနိုင်ပါကစာဖတ်ခြင်းကိုအလိုအလျောက်ပြောင်းလဲသွားစေရန် filter ကို calfi actifier_filter_append မှတစ်ဆင့်ကျွန်ုပ်တို့အသုံးပြုသည်။
stream_get_filters နှင့် stream_wrapper_register ၏အသုံးပြုမှုအားဖြင့်ကျွန်ုပ်တို့သည်တိကျသောဒေတာအပြောင်းအလဲများကိုဖြည့်ဆည်းရန်ပြောင်းလွယ်ပြင်လွယ်သောစိတ်ကြိုက်ပြင်ဆင်ရန်လုပ်ဆောင်ချက်များကိုဖန်တီးနိုင်သည်။ stream_get_filters များသည် stream_wrapper_register အား စိတ်ကြိုက် protocol များအတွက်စိတ်ကြိုက်ချွေတာသောလုပ်ငန်းများအကောင်အထည်ဖော်မှုကိုအကောင်အထည်ဖော်ရန်ခွင့်ပြုနေစဉ် Stream_Wrilts စီမံခန့်ခွဲမှုစွမ်းရည်များကိုချွေတာခြင်းစီမံခန့်ခွဲမှုစွမ်းရည်များကိုထောက်ပံ့ပေးသည်။ ထိုနှစ်ခုပေါင်းစပ်မှုသည် PHP ၏စွမ်းရည်ကို stream processing လုပ်ရန်နှင့် code ၏ပြောင်းလွယ်ပြင်လွယ်မှုတိုးတက်စေရန်အတွက် PHP ၏စွမ်းရည်ကိုများစွာချဲ့ထွင်နိုင်သည်။