Създадох няколко приставки, които изискват PHP5 + и SimpleXML. SimpleXML е много по-лесен и по-ефективен метод за анализ на XML отговорите от APIс. Проблемът обаче е, че щях да получавам по няколко имейла на ден или седмица с питане защо потребителят не може да зареди програмата и това доведе до грешки.
Очевидно моите известия за плъгините и на страниците на проекта не бяха достатъчни, затова постъпих правилно и добавих функционалност към двата плъгина, за да проверя, че разширението SimpleXML е заредено.
PHP функция за проверка на разширението SimpleXML е заредена:
функция isSimpleXMLLoaded () {$ array = array (); $ масив = get_loaded_extensions (); $ резултат = невярно; foreach ($ масив като $ i => $ value) {if (strtolower ($ value) == "simplexml") {$ result = true; }} върнете $ резултат; }
Сега, в рамките на функциите, които използват SimpleXML, мога просто да се уверя, че е зареден, преди действително да опитам обаждането SimpleXML. Ако
if (! isSimpleXMLLoaded ()) {echo "Хоствайте сайта си някъде другаде!"; връщане; }
Знам, че имам някои PHP гурута, които следят блога ми, кажете ми как се справих! Пуснах малки актуализации на двата плъгина, за да използвам този метод.
Здравей Дъг,
Забелязах една грешка, която вероятно не води до грешка.
if ($ value = “SimpleXML”) {$ result = true; }
трябва да бъде
if ($ value == “SimpleXML”) {$ result = true; }
Макар и от съображения за безопасност. Предпочитам.
if (strtolower ($ value) == “simplexml”) {$ result = true; }
Можете също да използвате 'extension_loaded', което взема името на разширението за проверка (чувствително към малки и големи букви).
$ loaded = extension_loaded (“SimpleXML”);
Връща TRUE или FALSE.
PS Не пийте кафе сам, но мога да поставя бутон „купете ми кутия с понички“ 🙂
Вземи този бутон за поничка, Ник! Вие сте спасител на живо! Смешното е, че (минус strtolower), всъщност моят примерен код се изпълнява и използва правилната оценка. Сигурно беше късно, защото докато го сложа, го обърках!
Промених кода и публикацията в блога. Въпрос: Някакво предимство на едното пред другото? Предполагам, че extension_loaded е много по-чист и бърз начин за справяне с това!
Благодаря Ник!
extension_loaded е пътят.
yum инсталирате php55-xml.x86_64, за да инсталирате simpleXML за php 5.5.11
Текуща транзакция
Инсталиране: php55-xml-5.5.11-1.el6.x86_64 1/1
Проверка: php55-xml-5.5.11-1.el6.x86_64 1/1
и след това се инсталира
/usr/lib64/php/modules/simplexml.so
Защо просто не направите „extension_loaded ('SimpleXML')“? http://php.net/manual/en/function.extension-loaded.php
Благодаря Джо! Страхотен съвет.