logo   PHP - Egne funktioner




En funktion er en navngivet container, der kan indeholde php- og / eller html-kode. Den kan kaldes og udføres så tit det skal være. Omvendt udføres den ikke, før den bliver kaldt, uanset hvor den fysisk er placeret. Funktioner kan være indlejret i aktuelt program, eller samlet i et funktionsbibliotek - der så includes efter behov. Det kan af linkhensyn være hensigtsmæssigt, at placere biblioteket så tæt på rooten som muligt.


Det kan være hensigtsmæssigt at samle alle egne funktioner i en enkelt fil (et "funktionsbibliotek"). For altid at gøre tingene ensartet kan filen placeres i root-mappen for det aktuelle projekt eller site. Derfra kan den ment tilknyttes i alle relevante situationer med en "include".


En måde at bygge en funktion på kan være, først at etablere koden "on location" og derefter indpakke den i grundformen for funktioner - incl. indsættelse af identer for parametre. Husk da, at variabelnavne evt. skal være lidt mere generelle, så funktionen bedre kan indpasses i andre sammenhænge. Return-nøgleordet og evt. kode knyttet dertil skal også tilpasses.




Byg en funktion


Grundformen for opbygning af en funktion er:

function eget_1tydigtNavn([$parameter01[, ...],"Jensen"] )
{
.
kode;
.
return $xxx;(hvis funktionen skal levere uddata)

}


Navn


Der er en række regler for navngivning af funktioner:


  • Skal være forskelligt fra PHP standard funktion.
  • Kombination af bogstaver tal og "_" må anvendes. (ikke Æ, Ø og Å)
  • Skal starte med et lille bogstav eller "_".
  • Bør være så "sigende" som muligt.
  • Kamel-formatering må anvendes


Parametre


En funktion skal have tilført parametre, hvis det er nødvendigt for at den kan udføre sin funktionalitet.


Et parameter kan være en forud defineret variabel eller et tal eller en tekststreng (de sidste to nok sjældent).


Flere parametre kan anføres som en kommasepareret streng. Ingen komma efter sidste parameter.


Hvert enkelt parameter kan tilføres værdi på 3 måder:

  • $varnavn01, der henter værdi fra en allerede defineret variabel
  • $varnavn01 = 'Jensen'
  • 'Jensen'


Der skal (kunne) tilføres værdier til alle parametre i en funktion, medmindre de er opbygget til at kunne være optionelle.


Parametre - optionelle


Det kan forekomme at koden i en funktion kan 'overleve' selvom et (par) af parametrene mangler. Parameterdata kan da (på mindst 2 forskellige måder) gøres optionelle


Optionelle parametre skal altid placeres sidst i parameterstrengen.


  • Default-metoden:
    Indsæt en default-værdi og tag passende hånd om den i funktionens kode. Bliver der leveret en rigtig værdi til parameteret (her $parameter02 vil default-værdien blive overskrevet.
    function eget_1tydigtNavn($parameter01, $parameter02 ="" )
    {
    .
    if ($parameter02 == "" {.....}
    }
    I stedet for "" kan parameter02 også indeholde en defaultværdi; f.eks: "Jensen".

  • Blank-metoden:
    Parameterfeltet tilføres ingen default værdi. Tag passende hånd derom i funktionens kode.
    function eget_1tydigtNavn($parameter01, )
    {
    .
    if (!isset($parameter02)) {....}

    eller
    if (empty($parameter02)) {....}
    }


Variabler


Variabler inde i en funktion lever i alle henseender (se dog nedenfor) afsondret fra omverdenen udenfor. De skal være definerede indenfor for at kunne bruges indenfor og definitioner indenfor kan ikke bruges udenfor.


Globale variabler


I stedet for at benytte 'parametervejen' ind i en funktion kan variabler hentes ind i en funktion udefra som 'globale variabler'. Inde i funktionen hentes en variabel med syntaksen 'global $varnavn;'. '$varnavn = $GLOBALS[$varnavn];' kan også anvendes.


Ved genbrug af en funktion kan man nemt overse den globale. Den kan findes / ikke findes på funktionens nye brugssted, og den kan have en helt utilsigtet værdi. Globale variabler bør derfor undgås.


Return


Nøgleordet 'return' har en dobbelt funktionalitet i en funktion:

  • Return stopper udførelsen af funktionen selvom der er mere kode tilbage.
  • Return kan overføre data til 'omverdenen' på 2 forskellige måder:
    • Uden tilknytning af kode:
      Return-værdien føres tilbage til funktionens navn: eget_1tydigtNavn(); og derfra evt. videre til variablen, som funktionen måtte være værdi for eller
      funktionens navn kan umiddelbart bruges som i:echo eget_1tydigtNavn();.
      Se nedenfor hvis mere end en værdi skal returneres.
    • Med tilknytning af kode (navn på variabel):
      Return-værdien overføres til variabel med samme ident udenfor funktionen.
      Se nedenfor hvis mere end en værdi skal returneres.

      Mere end en værdi til returnering:
      Return kan kun returnere en værdi: return $varnavn;
      Er der behov for at returnere flere, må de først samles i en array:
      $varnavn = array($varnavn01, $varnavn02, 'Jensen',...);
      return $varnavn;
      ,
      der opløses udenfor som:
      $varnavn01 = $varnavn[0];
      $varnavn02 = $varnavn[1];
      $varnavn03 = $varnavn[2];


Indeholder en funktion ingen Return returneres altid NULL.


Reference


Når den datamængde der skal returneres fra en funktion har nået en vis størrelse, kan det være hensigtsmæssigt at anvende fremgangsmåden 'reference':




Brug en funktion


Funktionsnavne er ikke 'case sensitive'.


Grundformen for brug af en funktion er:

egetEntydigtNavn();
eller
egetEntydigtNavn($a, ..., $n);


Indsættes der hvor funktionskoden skulle have været.




Anonyme funktioner






















x
x