Intereting Posts
Найти всю строку, содержащую слово с регулярными выражениями php Каков наилучший способ изучения mvc в PHP? в чем разница между расширением .php и .php.inc? Функция PHP для перечисления всех атрибутов объектов Существуют ли какие-либо библиотеки PHP для разбора ASN.1 или генерирования PHP-кода на его основе? Влиять на безопасность Laravel 5 при изменении структуры папок для удаления общей папки Получить массив и использовать его в запросе mysql с php Laravel: Ошибка : не удалось найти драйвер в MySQL PHP | Почему я должен использовать статическую / приватную статическую функцию вместо функции public / private? Как обновить кеш страницы, если сценарии были обновлены? Поиск с разделенным запятой значением mysql Проверка имени файла Windows open dompdf в новой вкладке данные взятые с данной страницы Предупреждение: функция файлового архива не работает String содержит любые элементы в массиве (без учета регистра)

PHP: В чем разница между классом SimpleXMLElement () и SimpleXML_load_string ()?

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