set_object (xml_set_object)
تابع xml_set_object می گذارد «پارسر XML» را داخل یک «شیء (Object)» استفاده کنیم. یعنی متدهای شیء، رویدادهای XML را بگیرند. مثل بازی که داور به کاپیتان تیم اشاره می کند، نه به همه بازیکن ها.
تعریف و کاربرد ساده
xml_set_object() پارسر را به یک شیء وصل می کند. سپس می توانی xml_set_element_handler و xml_set_character_data_handler را روی همان پارسر بگذاری و متدهای شیء رویدادها را دریافت کنند.
سینتکس
xml_set_object($parser, $object);
نمونه کد شی گرا
در این نمونه، پارسر در سازنده ساخته می شود. سپس به شیء وصل می شود. متدها رویدادهای شروع/پایان تگ و متن را می گیرند.
<?php
class XMLParser {
private $parser;
function __construct() {
$this->parser = xml_parser_create();
xml_set_object($this->parser, $this);
xml_set_element_handler($this->parser, "start_tag", "end_tag");
xml_set_character_data_handler($this->parser, "cdata");
}
function __destruct() {
xml_parser_free($this->parser);
unset($this->parser);
}
function parse($data) {
xml_parse($this->parser, $data);
}
function start_tag($parser, $tag, $attributes) {
var_dump($tag, $attributes);
}
function cdata($parser, $cdata) {
var_dump($cdata);
}
function end_tag($parser, $tag) {
var_dump($tag);
}
}
$xml_parser = new XMLParser();
$xml_parser->parse("<p id='test'>Hello World!</p>");
?>
پارامترها
parser: پارسر XML که می خواهی استفاده کنی.object: شیئی که قرار است متدهایش رویدادها را بگیرد.
جزئیات فنی
- مقدار برگشتی:
TRUEدر موفقیت،FALSEدر خطا. - نسخه PHP: از 4.0 به بعد.
گام های سریع اجرا
- پارسر را با
xml_parser_create()بساز. xml_set_object()را با پارسر و شیء صدا بزن.- هندلرها را با متدهای شیء ثبت کن.
- رشته XML را با
xml_parse()پردازش کن.
جمع بندی سریع
- اتصال پارسر به شیء ساده است.
- رویدادها به متدها می رسند.
- TRUE یعنی موفقیت.
- از PHP 4.0 پشتیبانی می شود.