Я видел, что SimpleXML_load_string()
кодировщики реализуют SimpleXML_load_string()
вместо класса SimpleXMLElement()
. Существуют ли какие-либо преимущества для использования первого над последним? Я прочитал руководство по PHP на simplexml . Я не мог понять, что это такое.
Любая помощь и руководство (возможно, с помощью примеров) будут высоко оценены. Заранее спасибо.
simplexml_load_string()
(как подсказывает название) загружает xml из строки и возвращает объект SimepleXMLElement
. Нет никакой разницы между этим и использованием обычного конструктора класса.
Обновить:
SimpleXML::__construct()
имеет дополнительный параметр (третий) bool $data_is_url = false
. Если это true
то поведение такое же, как simplexml_load_file()
(в сочетании с общими общими потоками). Таким образом, функции simplexml_load_*()
-функции имеют ту же функциональность, что и SimpleXML::__construct()
.
Дополнительные функции simplexml_load_*()
имеют вторую string $class_name = "SimpleXMLElement"
параметров string $class_name = "SimpleXMLElement"
чтобы указать класс возвращаемого объекта. Это не особая особенность функций, потому что вы можете «использовать» что-то очень похожее на обычную инициализацию
class MyXML extends SimpleXMLElement {} $a = new MyXML($xml); $b = simplexml_load_string($xml, 'MyXML');
Разница между ООП и процедурным подходом заключается в том, что функции возвращают false
при ошибке, но конструктор генерирует исключение.
В основном это удобная обертка. Создавая базовый элемент самостоятельно, вам нужно как минимум две строки кода для выполнения чего-либо. С помощью simplexml_load_string()
может быть достаточно одного выражения:
print simplexml_load_string($xml)->title;
Короче, чем:
$e = new SimpleXMLElement($xml); print $e->title;
И тогда, конечно, есть также небольшое изменение в сигнатуре функции.
Обновление: и точно такая же длина, как и
print(new SimpleXMLElement($xml))->title;
simplexml_load_string может возвращать другой объект:
class_name
Вы можете использовать этот необязательный параметр, чтобы simplexml_load_string () вернул объект указанного класса. Этот класс должен расширить класс SimpleXMLElement.