Хочу его использовать в контрибном модуле и быть уверенным, что не посыпятся баг-репорты от юзеров что "расширение SimpleXML не найдено".
Хочу его использовать в контрибном модуле и быть уверенным, что не посыпятся баг-репорты от юзеров что "расширение SimpleXML не найдено".
Никогда не нужно ни на что рассчитывать Нужно проверять наличие и сообщать об отсутствии, например в отчет "О состоянии", либо на странице настроек модуля
Комментарии
Никогда не нужно ни на что рассчитывать Нужно проверять наличие и сообщать об отсутствии, например в отчет "О состоянии", либо на странице настроек модуля
Вот какая штука есть: hook_requirements()
Да это всё понятно, просто не хотелось бы добавлять requirement из-за одной строчки кода ПРИ условии, что этого расширения у многих может не быть. В модуле в основном используется расширение XML, но одну маленькую фитюльку мне удобнее сделать на SimpleXML. Если SimpleXML является системным требованием ядра Друпал, то это одно, а если нет, и реально у многих оно не включено, то я лучше напишу вместо одной строчки пять и сделаю на XML.
На drupal.org есть вот такой документ, в котором приведен некий список расширений, включающий SimpleXML, но при этом нет явного и недвусмысленного утверждения, что именно этот список является частью системных требований.
Я недавно чинил сайт, который падал от включения модуля xmlsitemap. Оказалось, там на VPS не поставили php-xml) И такое бывает
Если действительно маленькую - проще шаблоном реализовать.
Нет, мне в моем KML-энкодере надо взять готовый фрагмент KML, генерируемый форматтером поля, например GeoField, и подсунуть его в общий PHP-массив документа, который будет потом закачан в DOMDocument и оттуда выгружен как XML штатным ядерным xml-энкодером Друпал (точнее symfony). Если я положу KML-текст просто как текстовое значение родительского XML-элемента, то умный xml-энкодер его заискейпит в CDATA. А если его вкачать в объект SimpleXML (одна строчка кода) и прямо этот объект подложить в массив, то умный xml-энкодер это поймет и правильно обработает. Средствами "взрослого" DOM-XML мне нужно мой несчастный фрагмент закачать сначала в специально для этого созданный DOMNode, а потом из него уже в мой PHP- массив, что уж очень громоздко.
В общем, буду использовать наверное SimpleXML, и requirement пропишу на всякий случай. Пусть лучше модуль не ставится, чем падает
Я этот хук в Commerce подсмотрел, им же bcmath требуется, казалось бы, такая элементарщина, а есть не везде. Так вот если они не обламываются юзать этот хук, то нам - простым смертным - переживать нечего))
Раньше обвешивался проверками, но сейчас из-за бурного роста технологий перестал, так как если не работает - то не работает и из- ошибки ясно что доставить, а если работает, то проверки жрут ресурсы всё время, что не в приоритете.
И в этой логике есть резон, но можно же проверять только во время установки модуля ($phase == 'install'), тогда в рантайме никакие ресурсы жраться не будут.
В 8-ке на уровне composer программирую проверку/установку нужного.
К слову, "ext-SimpleXML" - есть в зависимостях Drupal.
Соответственно, если не рассчитывать на вафлов которые не используют композер - можно смело* использовать в кастоме.
Довольно обидные ваши слова - я когда-нибудь научусь!
И спасибо за ответ, которого я, собственно, и ждал - теперь стало понятно где именно нужно смотреть эти самые ядерные требования.
PS А кстати что сделает composer если не найдет этого расширения - он же установить его самостоятельно не сможет?
Да нечему там учиться - просто нужно использовать. Не использовать - правда, глупо, но обидеть не преследовал цели
Композер - ругнется и не установит проект, т.к. окружение не соответствует (об этом он расскажет в сообщении).
Если композер видит, что чего-то не хватает, то он пишет в консоль длинную тираду и ничего не устанавливает.