|
|
några sidor på nätet om PHP programmering |
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
1.13.1 ProgramfilerFör att inte behöva skriva samma kod flera gånger, och för att kunna återanvända kod så har PHP några kodspecifika metoder:
Se även: include includeInclude tar och sätter in och kör programkoden i en fil. Nedan är en liten simpel fil som bara skriver "Hello world"
<?php
Listning 1.13.1.1 - samples/s111.php Hello World Resultat av listning 1.13.1.1 Denna kan sedan inkluderas i en annan fil
<?php
Listning 1.13.1.2 - samples/s112.php Hello World Hello World Hello World Resultat av listning 1.13.1.2 Det är dock sällan så god idé att låta den inkluderade filen skriva ut någonting. Inkluderingsfilerna skall helst innehålla funktioner. Detta gör dem mer användbara, och koden blir mer modulär. Se nedanstående exempel:
<?php
Listning 1.13.1.3 - samples/s113.php [Visa i separat fönster]
<?php
Listning 1.13.1.4 - samples/s114.php Hello World Hello World Hello World Resultat av listning 1.13.1.4 Det kan dock förekomma att man råkar inkludera samma fil på flera ställen. Detta kommer att ge ett felmeddelanden:
<?php
Listning 1.13.1.5 - samples/s115.php Fatal error: Cannot redeclare helloworld() (previously declared in /home/vhome/enges.org/www/phpkurs/samples/s113.php:4) in /home/vhome/enges.org/www/phpkurs/samples/s113.php on line 2 Resultat av listning 1.13.1.5 include_onceInclude_once fungerar precis som include, men om man råkar inkludera filen flera gånger kommer den ändå att bara inklueras en gång. Se nedan:
<?php
Listning 1.13.1.6 - samples/s116.php Hello World Resultat av listning 1.13.1.6 Om man har funktionsbibliotek som inkluderas så skall man således använda include_once och inte include. requireRequire fungerar lite som include men medan include går att programmera, t.ex. med if, kommer require alltid att utföras. Se nedanstående exempel
<?php
Listning 1.13.1.7 - samples/s118.php Resultat av listning 1.13.1.7 Ovanstående fil sätts in med require:
<?php
Listning 1.13.1.8 - samples/s117.php Hello World Resultat av listning 1.13.1.8 require_onceDenna fungerar som require, men kommer endast att utföras en gång. Se include_once. include_pathI php.ini finns det en rad include_path. Om den är satt till: För UNIX include_path = ".:/php/includes" För Windows include_path = ".;c:\php\includes"
Kommer inkluderingsfiler i första hand att sökas i nuvarande katalog och i andra hand i den eller de katalog som som anges med : (Unix) eller ; (WIN) mellan. Anger man pathen för en include fil, t.ex. ./samples/s111.php, så antas samples katalogen finnas unde den nuvarande katalogen. Detta kan ibland ställa till problem. Mest specifikt är problemet om vi har en fil som inkluderar en annan fil och denna i sin tur inkluderar en tredje: filen.php som i sin tur inkluderar entill.php som finns i samma katalog som inkluderad.php. Vilken är nuvarande katalog för inkluderad.php? Det är inte samples katalogen för filen.php har inkluderat den, och filen.php finns inte i samples. inkluderad-php skulle då behöva inkludera ./samples/entill.php, fast den är i samma katalog. Detta gör livet lite mer invecklat. En lösning som fungerar är följande
<?php
Listning 1.13.1.9 - samples/inkluderad.php Resultat av listning 1.13.1.9 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| © anders enges, mariehamn, 2004| 20.10.2004 13:46 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
PHP Filer Programfiler |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||