PHP တွင် STAM သည်ဖိုင်များ, network connection များသို့မဟုတ်အခြား inputpros / output အရင်းအမြစ်များကိုကိုင်တွယ်ရန်အတွက်အဓိကသော့ချက်ဖြစ်သည်။ stream filter များသည်စမ်းချောင်းတွင်အချက်အလက်များကိုထုတ်လွှင့်ပြီးစာမဖတ်မီဒေတာများကိုပြုပြင်မွမ်းမံနိုင်သည့်စမ်းချောင်းများနှင့်တွဲဖက်ထားသောလုပ်ဆောင်ချက်အချို့ကိုပြုလုပ်သည်။ Stream_get_Filters နှင့် Stream_filter_append သည် PHP တွင်စစ်ထုတ်သည့် PHP တွင်အရေးကြီးသောလုပ်ဆောင်ချက်နှစ်ခုဖြစ်သည်။
ဤဆောင်းပါးသည်ဤလုပ်ဆောင်ချက်နှစ်ခုကိုမည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်ရှင်းပြပါမည်။ streaming data streaming data filtering ကိုအကောင်အထည်ဖော်ရန်မည်သို့အတူတကွအသုံးပြုနိုင်သည်ကိုရှင်းပြပါမည်။
stream_get_filters function ကိုလက်ရှိရရှိနိုင်သည့် stream filters အားလုံးကိုရယူရန်အသုံးပြုသည်။ stream filter များသည်စီးဆင်းနေသောသို့မဟုတ်လုပ်ငန်းစဉ်အချက်အလက်များ၏အပြုအမူကိုစီးဆင်းစေနိုင်သောကြိုတင်သတ်မှတ်ထားသောလုပ်ဆောင်ချက်များဖြစ်သည်။ Stream_get_Filters ခေါ်ဆိုခြင်းဖြင့်စနစ်ရှိမှတ်ပုံတင်ထားသော stream filter များကိုသင်ကြည့်ရှုနိုင်သည်။
$filters = stream_get_filters();
print_r($filters);
ဤကုဒ်သည်ရရှိနိုင်သည့် stream filters များကို output လုပ်လိမ့်မည်။ ဥပမာအားဖြင့်, string.toupper , convert.base64-encode စသည့်စစ်ထုတ်စက်များစသည်တို့ကိုသင်တွေ့မြင်နိုင်သည်။ filter တစ်ခုစီသည်တိကျသောအချက်အလက်ပြောင်းလဲခြင်းသို့မဟုတ်လည်ပတ်မှုနှင့်ကိုက်ညီသည်။
stream_filter_append function ကိုစမ်းချောင်းတစ်ခုသို့ filter တစ်ခုဖြည့်ဆည်းရန်အသုံးပြုသည်။ steam_filter_preme ာရီ နှင့်မတူဘဲ stream_filter_append သည် စီးဆင်းမှု၏အဆုံးတွင် filter တစ်ခုကိုဖြည့်ဆည်းပေးသည်, stream_filter_append ကို Custom Stream filter တစ်ခုပူးတွဲရန်သို့မဟုတ် system-filter ကိုသုံးပါ။
$fp = fopen("php://temp", "r+");
stream_filter_append($fp, "string.toupper");
fwrite($fp, "hello world\n");
rewind($fp);
echo fread($fp, 1024); // ထုတ်လုပ်ခြင်း: HELLO WORLD
fclose($fp);
အပေါ်ကဥပမာမှာ string.toupper ကို filter filter to filter filter ကို filter filter to filter filter ကို file stream ထဲကိုဖြည့်ဆည်းပေးတယ်။
ဤလုပ်ဆောင်ချက်နှစ်ခုကိုပေါင်းစပ်ခြင်းအားဖြင့်ရရှိနိုင်သည့် filter များကိုအရင်ကြည့်ရှုပြီးသင့်တော်သော filter ကိုရွေးချယ်နိုင်သည်။ ပထမ ဦး စွာသင် stream_get_filters များကို filter အားလုံးကိုကြည့်ရှုရန်သုံးနိုင်သည် ။
ဖိုင်တစ်ခု၏ contents များကိုဖတ်ပြီးစာသားအားလုံးကိုစာလုံးအကြီးအဖြစ်ပြောင်းလဲလိုသည်ဆိုပါစို့။ ရရှိနိုင်သည့် filter များကိုကြည့်ရှုရန် Stream_get_get_Filters ကို အသုံးပြုပါမည်, သင့်တော်သော filter တစ်ခုကိုရွေးချယ်ပါ။ ထို့နောက် file stream ကို filter လုပ်ရန် stream_filter_append ကို သုံးပါ။
// ရရှိနိုင်သည့် filter များကိုကြည့်ပါ
$filters = stream_get_filters();
print_r($filters);
// ညာဘက် filter ကိုရွေးပါ(string.toupper)နှင့်စီးမှပူးတွဲပါ
$fp = fopen("sample.txt", "r+");
stream_filter_append($fp, "string.toupper");
// ဖိုင်အကြောင်းအရာများရေးရန်နှင့်ဖတ်ပါ
fwrite($fp, "hello world\n");
rewind($fp);
echo fread($fp, 1024); // ထုတ်လုပ်ခြင်း: HELLO WORLD
fclose($fp);
System Present Filter များအပြင် PHP သည်အသုံးပြုသူများအားစိတ်ကြိုက် strams များကိုဖန်တီးရန်ခွင့်ပြုသည်။ Custom filter များကိုအသုံးပြုရန်သင်ဤစစ်ထုတ်ကိရိယာများကိုပူးတွဲရန် stream_filter_append ကို သုံးနိုင်သည်။ ဤတွင်စာသားထဲမှာစာလုံးအကြီးများအားလုံးကိုစာသားထဲမှာစာလုံးအကြီးများကိုဘယ်လိုပြောင်းလဲရမယ်ဆိုတာပြသတဲ့ရိုးရှင်းတဲ့စိတ်ကြိုက်စစ်အာဏာစစ်တမ်းဥပမာတစ်ခုပါ။
// စိတ်ကြိုက် filter တစ်ခုဖန်တီးပါ
class UppercaseFilter extends php_user_filter {
public function filter($in, $out) {
while ($bucket = stream_bucket_make_writeable($in)) {
// အရင်းအနှီးမှပြောင်းပါ
$bucket->data = strtoupper($bucket->data);
stream_bucket_append($out, $bucket);
}
return PSFS_PASS_ON;
}
}
// filter ကိုမှတ်ပုံတင်ပါ
stream_filter_register("uppercase", "UppercaseFilter");
// စိတ်ကြိုက် filter များကိုသုံးပါ
$fp = fopen("php://temp", "r+");
stream_filter_append($fp, "uppercase");
fwrite($fp, "hello world\n");
rewind($fp);
echo fread($fp, 1024); // ထုတ်လုပ်ခြင်း: HELLO WORLD
fclose($fp);
ဤဥပမာတွင်ကျွန်ုပ်တို့သည် custom stream filter တစ်ခုဖြစ်ပြီးစာလုံးအသေးများအားလုံးကိုစာလုံးအ ကြီးများ မှစာလုံးအကြီးများသို့စာလုံးအကြီးများသို့ပြောင်းလဲပေးသည်။
stream_get_filters နှင့် stream_filter_append သည် PHP ရှိအင်အားကြီးသောစီးဆင်းမှုယန္တရား၏အဓိကလုပ်ဆောင်ချက်များဖြစ်သည်။ ဤလုပ်ဆောင်ချက်များနှင့်အတူ, သင်သည်စီးဆင်းမှုစစ်ထုတ်ခြင်းများကိုအလွယ်တကူစီမံပြီးစမ်းချောင်းရှိအချက်အလက်များကိုအချိန်မှန်ဖြင့်စီမံနိုင်သည်။ ဤလုပ်ဆောင်ချက်များကိုပေါင်းစပ်ခြင်းဖြင့်အမျိုးမျိုးသောဒေတာများချောင်းများကိုပြောင်းလွယ်ပြင်လွယ်စွာလုပ်ဆောင်ရန်နှင့်မတူညီသောအခြေအနေများ၏လိုအပ်ချက်များကိုဖြည့်ဆည်းပေးသည်။
လက်တွေ့တွင်သင်ပိုမိုရှုပ်ထွေးသောအချက်အလက်အပြောင်းအလဲများကိုရရှိခြင်းဖြင့်ရရှိနိုင်သည့် stream filter များကိုကြည့်ခြင်းအားဖြင့်ပိုမိုရှုပ်ထွေးသောဒေတာလုပ်ဆောင်မှုလိုအပ်ချက်များကိုရရှိနိုင်ပါသည်။
stream_get_filters နှင့် stream_filter_apilter_apilter_apilter_apiltend လုပ်ဆောင်ချက်များကိုနားလည်ရန်နှင့်အသုံးပြုရန်အတွက်ဤဆောင်းပါးသည်သင်အကူအညီပေးရန်အထောက်အကူပြုလိမ့်မည်ဟုမျှော်လင့်ပါသည်။