
PHP: SimpleXML è caricato?
Ci sono un paio di plugin che ho creato che richiedono PHP5 + e SimpleXML. SimpleXML è un metodo molto più semplice e con migliori prestazioni per analizzare le risposte XML da APIS. Il problema, tuttavia, è che ricevevo poche e-mail al giorno o alla settimana che mi chiedevano perché l'utente non poteva caricare il programma e questo causava errori.
Apparentemente, i miei avvisi sui plugin e sulle pagine del progetto non erano sufficienti, quindi ho fatto la cosa giusta e ho aggiunto funzionalità a entrambi i plugin per verificare che l'estensione SimpleXML sia caricata.
Funzione PHP per verificare che l'estensione SimpleXML sia caricata:
funzione isSimpleXMLLoaded () {$ array = array (); $ array = get_loaded_extensions (); $ risultato = falso; foreach ($ array come $ i => $ valore) {if (strtolower ($ valore) == "simplexml") {$ risultato = true; }} restituisce $ risultato; }
Ora, all'interno delle funzioni che utilizzano SimpleXML, posso semplicemente assicurarmi che sia caricato prima di provare effettivamente la chiamata SimpleXML. Se
if (! isSimpleXMLLoaded ()) {echo "Ospita il tuo sito da qualche altra parte!"; ritorno; }
So di avere alcuni guru di PHP che tengono d'occhio il mio blog, fammi sapere come ho fatto! Ho rilasciato aggiornamenti minori a entrambi i plugin per utilizzare questo metodo.
Ciao Doug,
Ho notato un bug che probabilmente non genera un errore.
if ($valore = “SempliceXML”) { $risultato = vero; }
dovrebbe essere
if ($valore == “SempliceXML”) { $risultato = vero; }
Anche se per motivi di sicurezza. Preferisco.
if (strtolower($valore) == “simplexml”) { $risultato = vero; }
Puoi anche usare 'extension_loaded' che prende il nome dell'estensione da controllare (maiuscole/minuscole).
$caricato = estensione_caricata("SempliceXML");
Restituisce VERO o FALSO.
PS Non bevo il caffè da solo, ma potrei mettere un pulsante "comprami una scatola di ciambelle" 🙂
Alza quel bottone della ciambella, Nick! Sei un salvavita! La cosa divertente è che (meno lo strtolower), in realtà avevo il mio codice di esempio in esecuzione e utilizzando la giusta valutazione. Deve essere stato tardi perché quando l'ho inserito, l'ho incasinato!
Ho modificato il codice e il post del blog. Domanda: Qualche vantaggio dell'uno rispetto all'altro? Immagino che extension_loaded sia un modo molto più pulito e veloce per affrontarlo!
Grazie Nick!
extension_loaded è la strada da percorrere.
yum installa php55-xml.x86_64 per installare simpleXML per php 5.5.11
Transazione in corso
Installing : php55-xml-5.5.11-1.el6.x86_64 1/1
Verifying : php55-xml-5.5.11-1.el6.x86_64 1/1
e poi installato
/usr/lib64/php/modules/simplexml.so
Perché non dovresti semplicemente fare "extension_loaded ('SimpleXML')"? http://php.net/manual/en/function.extension-loaded.php
Grazie Gio! Ottimo consiglio.