Det er et par plugins jeg har bygget som krever PHP5 + og SimpleXML. SimpleXML er en mye enklere og bedre utførelsesmetode for å analysere XML-svar fra APIs. Problemet er imidlertid at jeg får noen e-postmeldinger om dagen eller uken og spør meg hvorfor brukeren ikke kunne laste programmet, og det resulterte i feil.
Tilsynelatende var ikke merknadene mine på programtilleggene og på prosjektsidene nok, så jeg gjorde det rette og la funksjonalitet til begge programtilleggene for å bekrefte at SimpleXML-utvidelsen er lastet inn.
PHP-funksjon for å sjekke at SimpleXML-utvidelsen er lastet:
funksjonen erSimpleXMLLoaded () {$ array = array (); $ array = get_loaded_extensions (); $ resultat = usant; foreach ($ array som $ i => $ verdi) {if (strtolower ($ value) == "simplexml") {$ result = true; }} returner $ resultat; }
Nå, innen funksjonene som bruker SimpleXML, kan jeg ganske enkelt sikre at den er lastet før jeg faktisk prøver SimpleXML-samtalen. Hvis
if (! isSimpleXMLLoaded ()) {echo "Vert nettstedet ditt et annet sted!"; komme tilbake; }
Jeg vet at jeg har noen PHP-guruer som holder øye med bloggen min, gi meg beskjed om hvordan jeg gjorde det! Jeg har gitt ut mindre oppdateringer til begge pluginsene for å bruke denne metoden.
Hei Doug,
Jeg la merke til en feil som sannsynligvis ikke gir en feil.
if ($value = “SimpleXML”) { $result = true; }
bør være
if ($value == “SimpleXML”) { $result = true; }
Skjønt for sikkerhets skyld. Jeg foretrekker.
if (strtolower($verdi) == “simplexml”) { $result = sant; }
Du kan også bruke 'extension_loaded' som tar utvidelsesnavnet for å sjekke (skiller mellom store og små bokstaver).
$loaded = extension_loaded(“SimpleXML”);
Returnerer TRUE eller FALSE.
PS Ikke drikk kaffe selv, men jeg kan sette en "kjøp meg en boks med smultringer"-knapp 🙂
Få opp smultringknappen, Nick! Du er en livredder! Det som er morsomt er at (minus strtolower), jeg faktisk hadde prøvekoden min kjørende og brukte riktig evaluering. Det må ha vært sent, for da jeg satte det inn, rotet jeg det til!
Jeg har endret koden og blogginnlegget. Spørsmål: Noen fordeler med det ene fremfor det andre? Jeg antar at extension_loaded er en mye renere og raskere måte å håndtere dette på!
Takk Nick!
extension_loaded er veien å gå.
yum installer php55-xml.x86_64 for å installere simpleXML for php 5.5.11
Kjører transaksjon
Installerer: php55-xml-5.5.11-1.el6.x86_64 1/1
Bekrefter: php55-xml-5.5.11-1.el6.x86_64 1/1
og deretter installert
/usr/lib64/php/modules/simplexml.so
Hvorfor ville du ikke bare gjøre "extension_loaded ('SimpleXML')"? http://php.net/manual/en/function.extension-loaded.php
Takk Joe! Godt råd.