Avatar billede styless Nybegynder
11. november 2004 - 09:54 Der er 12 kommentarer og
1 løsning

Finde ud af om extension/function findes

Hey,

jeg har lavet en klasse i PHP som gør at jeg mulighed for at bruge den gamle mysql_* og den nye mysqli_*. Lige nu chekker jeg på versionen af PHP og MySQL. Hvis det er 5.0 eller over og 4.1 eller over bruger den mysqli_*, ellers den gamle. Men jeg kunne godt tænke mig at gøre det på en anden måde. Jeg har siddet lidt og kigget på getenv() og har også tænkt på at gøre det ved at loade phpinfo() ind i en streng og så lave en søgning på mysqli.

Så spørgsmålet lyder: Hvilken metode af dem jeg har nævnt er bedst eller er der en anden bedre metode? En der måske er mere dynamisk, måske.
Avatar billede olebole Juniormester
11. november 2004 - 10:01 #1
<ole>

Du kan jo altid skrive noget à la:

$bla = false;
if ( $bla=@myFunc() ) {
    // Brug $bla
} else {
    // Brug en anden funktion
}

Et '@' foran et funktionskald undetrykker PHP's fejlmelding - og giver således mulighed for egen fejl-håndtering.
Du kan udføre testen hver gang - eller blot en enkelt gang. Det må afhænge af din øvrige kode og behov.

/mvh
</bole>
Avatar billede coderdk Praktikant
11. november 2004 - 10:41 #2
Noget i stil med:

if ( function_exists( "imap_open" ) )
{
  echo "IMAP funktionerne findes!";
}
else
{
  echo "IMAP funktionerne findes ikke...";
}
Avatar billede styless Nybegynder
11. november 2004 - 12:44 #3
Begge to kan godt bruges men jeg fravælger oleboles da jeg ikke er SÅ vil med at fremkalde fejl automatisk :)

Takker
Avatar billede olebole Juniormester
11. november 2004 - 12:50 #4
Jeg ville nu også vælge coder.dk's - men det har ikke noget at gøre med at fremprovokere en fejl. Det er en helt standard procedure i PHP at gøre det.
Det er faktisk måden, folkene bag PHP selv anbefaler at teste for forskelligt - og håndtere evt. fejl på  ;o)
Avatar billede styless Nybegynder
11. november 2004 - 13:10 #5
Ja, jeg læste lige nærmere på function_exists() siden og der står faktisk:

"If you know a function exists but want to see if it is available you should execute it and compare it's return value to false.

For example the getmxrr() function on a Windows platform exists but is not available (as of 4.2.0).  To check:

$result = @getmxrr("me@hotmail.com");
if ( false === $result ) {
  # do unavailable function handling
}

The @ silences the unavailable function warning."
Avatar billede olebole Juniormester
11. november 2004 - 14:40 #6
yups ... som sagt helt standard. Så ved du det til en anden go' gang  ;o)
Avatar billede jakoba Nybegynder
29. november 2004 - 20:28 #7
Øhh, du styless, jag har altså aldrig lagt nogen karmabesked til dig. Har vi overhovedet været sammen i et spm før nu?
Avatar billede styless Nybegynder
29. november 2004 - 21:14 #8
Ja vi har: http://www.eksperten.dk/spm/506152 ... Ekstrem unødvendig og grov besvarelse fra din side. Ved ikke hvordan du har fundet ud af jeg har lagt en karma besked til dig. Ikke fordi jeg ikke står ved den eller prøver at være anonym. Som and_ skriver indlæget så burde man forvente mere af dig og at du satte dig mere ind i tingene.
Avatar billede jakoba Nybegynder
29. november 2004 - 21:24 #9
Fair enuft. Ja, Jeg jeg var lidt grov der.
Troede det var en vred reaktion den karmabesked (ikke fra mig) du lagde link til i den karma du gav.

mvh JakobA
Avatar billede styless Nybegynder
29. november 2004 - 21:26 #10
Nej den var ikke fra mig...
Avatar billede styless Nybegynder
29. november 2004 - 21:27 #11
6/7 2004 15:41 er fra undertegnede...
Avatar billede jakoba Nybegynder
29. november 2004 - 21:52 #12
Hmm. det her karma-anonymitet er ikke helt uden problemer, når vi sådan begynder at gætte :-))
Avatar billede styless Nybegynder
29. november 2004 - 21:58 #13
Nej den er ret ringe. Endnu mere administrations arbejde og mere grund til at folk kan flame hinanden ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester