Я видел, что 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.