شروع namespace decl handler (xml_set_start_namespace_decl_handler)
اینجا با «هندلر شروع فضای نام XML» آشنا می شوی. «فضای نام (Namespace)» پیشوندی برای جداکردن نام هاست. «هندلر (Handler)» هم یعنی تابع واکنش گر. وقتی فضای نام اعلام شود، این هندلر صدا می خورد؛ مثل ناظم که شروع زنگ هنر را اعلام می کند.
کاربرد هندلر شروع فضای نام XML
تابع xml_set_start_namespace_decl_handler() مشخص می کند هنگام «اعلان فضای نام» کدام تابع اجرا شود. تابع هندلر سه ورودی دارد: $parser، $prefix، $uri. سپس می توانی با این اطلاعات منطق خودت را اجرا کنی.
برای کار شی گرا، صفحه اتصال پارسر به شیء را ببین. همچنین برای رویدادهای پردازشی، هندلر دستور پردازش XML کاربردی است.
سینتکس
xml_set_start_namespace_decl_handler($parser, $handler);
نمونه کد کوتاه
در این نمونه، هندلر شروع فضای نام را ثبت می کنیم. سپس هنگام اعلان، پیشوند و URI را چاپ می کنیم.
<?php
$parser = xml_parser_create();
function ns_start_handler($parser, $prefix, $uri) {
echo "NS Prefix: " . $prefix . "<br>";
echo "NS URI: " . $uri . "<br>";
}
xml_set_start_namespace_decl_handler($parser, "ns_start_handler");
// اینجا معمولاً xml_parse(...) روی ورودی XML صدا زده می شود.
xml_parser_free($parser);
?>
پارامترها
parser: پارسر XML که هندلر را فراخوانی می کند.handler: نام تابع رویداد. امضا باید سه پارامتر داشته باشد.
امضای تابع هندلر
$parser: خود پارسر فراخواننده.$prefix: پیشوند فضای نام.$uri: نشانی فضای نام.
نکته: می توانی به جای نام تابع، آرایه [object, method] بدهی.
هشدار: قبل از xml_parse() حتماً هندلر را ثبت کن؛ وگرنه رویداد از دست می رود.
جزئیات فنی
- خروجی:
TRUEدر موفقیت،FALSEدر خطا. - نسخه PHP: از 4.0.5 به بعد.
گام های سریع اجرا
- با
xml_parser_create()یک پارسر بساز. - هندلر شروع فضای نام را ثبت کن.
- XML را با
xml_parse()پردازش کن. - در پایان، پارسر را آزاد کن.
جمع بندی سریع
- هندلر شروع فضای نام سه ورودی دارد.
- پیشوند و URI را می گیری.
- قبل از parse تنظیمش کن.
- برگشت TRUE یعنی موفقیت.