Il y a quelques plugins que j'ai construits qui nécessitent PHP5 + et SimpleXML. SimpleXML est une méthode beaucoup plus simple et plus performante d'analyse des réponses XML à partir de APIs. Le problème, cependant, est que je recevais quelques courriels par jour ou par semaine me demandant pourquoi l'utilisateur ne pouvait pas charger le programme et cela entraînait des erreurs.
Apparemment, mes avis sur les plugins et sur les pages du projet n'étaient pas suffisants, j'ai donc fait la bonne chose et ajouté des fonctionnalités aux deux plugins pour vérifier que l'extension SimpleXML est chargée.
La fonction PHP pour vérifier que l'extension SimpleXML est chargée:
function isSimpleXMLLoaded () {$ array = array (); $ array = get_loaded_extensions (); $ résultat = faux; foreach ($ array as $ i => $ value) {if (strtolower ($ value) == "simplexml") {$ result = true; }} retourne $ result; }
Maintenant, dans les fonctions qui utilisent SimpleXML, je peux simplement m'assurer qu'il est chargé avant d'essayer réellement l'appel SimpleXML. Si
if (! isSimpleXMLLoaded ()) {echo "Hébergez votre site ailleurs!"; revenir; }
Je sais que j'ai des gourous de PHP qui gardent un œil sur mon blog, dites-moi comment j'ai fait! J'ai publié des mises à jour mineures des deux plugins pour utiliser cette méthode.
Salut Doug,
J'ai remarqué un bogue qui ne génère probablement pas d'erreur.
if ($value = "SimpleXML") { $result = true ; }
devrait être
if ($value == "SimpleXML") { $result = true ; }
Bien que pour des raisons de sécurité. Je préfère.
if (strtolower($value) == "simplexml") { $result = true; }
Vous pouvez également utiliser 'extension_loaded' qui prend le nom de l'extension à vérifier (sensible à la casse).
$loaded = extension_loaded("SimpleXML");
Renvoie VRAI ou FAUX.
PS Je ne bois pas de café moi-même mais je peux mettre un bouton "Achetez-moi une boîte de beignets" 🙂
Relevez ce bouton de beignet, Nick ! Vous êtes une bouée de sauvetage ! Ce qui est drôle, c'est que (moins le strtolower), j'ai effectivement eu mon exemple de code en cours d'exécution et en utilisant la bonne évaluation. Il a dû être tard car au moment où je l'ai mis, je l'ai foiré !
J'ai modifié le code et le billet de blog. Question : Y a-t-il un avantage de l'un sur l'autre ? Je suppose que l'extension_loaded est un moyen beaucoup plus propre et plus rapide de gérer cela!
Merci Nick!
extension_loaded est la voie à suivre.
yum install php55-xml.x86_64 pour installer simpleXML pour php 5.5.11
Transaction en cours
Installation : php55-xml-5.5.11-1.el6.x86_64 1/1
Vérification : php55-xml-5.5.11-1.el6.x86_64 1/1
puis il s'est installé
/usr/lib64/php/modules/simplexml.so
Pourquoi ne feriez-vous pas simplement "extension_loaded ('SimpleXML')" ? http://php.net/manual/en/function.extension-loaded.php
Merci Joe ! Très bon conseil.