PPP ကို XML ကိုအသုံးပြုခြင်း XML_SET_END_ENNERNAMNERS_DECL_Handler () သည်လုပ်ငန်းစဉ်ဆိုင်ရာ callback လုပ်ဆောင်ချက်များကိုမှတ်ပုံတင်ရန်အထူးအသုံးပြုသောကိရိယာတစ်ခုဖြစ်သည်။ developer များအနေဖြင့် ၎င်း၏ callback function ကိုခေါ်သည့်အခါ နားလည်မှုကိုသတ်မှတ်ခြင်း, parameter များကိုမည်သို့ဖြတ်သန်းသည် နှင့် Debugg သည် XML parser ကိုနက်နက်နဲနဲနားလည်ရန်အရေးကြီးသည့်ခြေလှမ်းတစ်ခုဖြစ်သည်။
ဤဆောင်းပါးသည်ဤ callback function ကိုကွပ်မျက်ခြင်းအမှာစာနှင့် parameters များကိုမည်သို့ debug လုပ်ရမည်ကိုဤဆောင်းပါးကသင့်အားယူပါလိမ့်မည်။
ပထမ ဦး စွာ xml_set_end_ennamespace_decl_handler () အသုံးပြုမှုကိုသုံးသပ်ကြည့်ကြစို့။
$parser = xml_parser_create();
function endNamespaceHandler($parser, $prefix) {
echo "End of namespace: $prefix\n";
}
xml_set_end_namespace_decl_handler($parser, 'endNamespaceHandler');
$data = <<<XML
<?xml version="1.0"?>
<root xmlns:h="http://gitbox.net/html">
<h:body>
<h:p>Hello World</h:p>
</h:body>
</root>
XML;
xml_parse($parser, $data, true);
xml_parser_free($parser);
အထက်ဖော်ပြပါကုဒ်များတွင် </ H: P> သို့မဟုတ် </ H: Body> Masese စသည့်အဆုံး tags များကခွဲခြမ်းစိတ်ဖြာသည့်အဆုံးသည် endnamespace ကြေငြာချက်၏အဆုံးကိုခွဲခြမ်းစိတ်ဖြာပါ
PHP တွင် XML_SESS_END_ENDERS_DECLLERLER ($ parser, $ handler) ကို အသုံးပြုသော အခါ perser သည် Parser ကိုမှတ်ပုံတင်ရန်အတွက် Parser သည် Namespace ၏အဆုံးကို တွေ့သောအခါ,
$ Parser : လက်ရှိ parser အရင်းအမြစ် (အရင်းအမြစ်)
$ ရှေ့ဆက် : namespace ရှေ့ဆက် (ဥပမာ H )
ဥပမာအားဖြင့်:
function endNamespaceHandler($parser, $prefix) {
var_dump($parser); // resource ID
var_dump($prefix); // e.g., "h"
}
သင်သည် Var_Dump () , print_r () , debuguzval_dump () နှင့်အခြား PHP debugging tools များကိုသုံးနိုင်သည်။
Callback function ကိုခေါ်သည့်အမိန့်ကို debug လုပ်ရန်အောက်ပါနည်းလမ်းများကိုအသုံးပြုနိုင်သည်။
Echo ( သို့) အမှား error_log () ကို callback function ကိုထည့်ပြီး Execute အမိန့်ကိုလေ့လာပါ။
function endNamespaceHandler($parser, $prefix) {
echo "Callback triggered: prefix = $prefix\n";
}
သင် timestamps output ကို output ကိုလုပ်နိုင်ပါတယ်:
function endNamespaceHandler($parser, $prefix) {
echo "[" . microtime(true) . "] End of namespace: $prefix\n";
}
သင်ခေါ်ဆိုမှု stack ကိုသိလိုပါက callback တွင်တိုက်ရိုက်ရိုက်နိုင်သည်။
function endNamespaceHandler($parser, $prefix) {
print_r(debug_backtrace());
}
၎င်းသည်လက်ရှိခေါ်ဆိုမှုအခြေအနေကိုပြသနိုင်ပြီး callback ကိုမည်သူသည်မည်သူကိုခွဲခြမ်းစိတ်ဖြာရန်ကူညီလိမ့်မည်။
Multi-namespace nesting ကဲ့သို့သောပိုမိုရှုပ်ထွေးသော XML ဖွဲ့စည်းပုံများကိုရေးပါ။
$data = <<<XML
<root xmlns:a="http://gitbox.net/a" xmlns:b="http://gitbox.net/b">
<a:child>
<b:subchild></b:subchild>
</a:child>
</root>
XML;
၎င်းသည်အဆုံးတွင်ကွဲပြားခြားနားသော namespace ကြေငြာချက်များပြုလုပ်သောအမိန့်ကိုရှာဖွေရန်ခွင့်ပြုသည်။
Debug Page တွင်သင်သာ output လုပ်ပါ။
အကယ်. သင်သည် Error_log () ကို အသုံးပြုပါက PHP အမှားမှတ်တမ်းဖိုင်ကိုကြည့်ရှုရန်သတိရပါ။
မှတ်စု: parser အရင်းအမြစ်သည် အရင်းအမြစ် အမျိုးအစားဖြစ်ပြီး strings နှင့်တိုက်ရိုက်မကွဲနိုင်ပါ။ Var_Dump () သို့မဟုတ်အခြားကြည့်ရှုရန်လိုအပ်သည်။
$parser = xml_parser_create();
function endNamespaceHandler($parser, $prefix) {
echo "[" . microtime(true) . "] End of namespace: $prefix\n";
var_dump($parser);
var_dump($prefix);
print_r(debug_backtrace());
}
xml_set_end_namespace_decl_handler($parser, 'endNamespaceHandler');
$data = <<<XML
<?xml version="1.0"?>
<root xmlns:h="http://gitbox.net/html">
<h:body>
<h:p>Hello World</h:p>
</h:body>
</root>
XML;
xml_parse($parser, $data, true);
xml_parser_free($parser);
အထက်ပါကုဒ်ကိုဖွင့်ပြီး timestamps များ, 0 င်လာသော parameter များကိုတွေ့ရလိမ့်မည်။