Ik heb eigenlijk een bijzonder korte vraag, met betrekking tot het `auto loaden` van classes in PHP 5.3.
Stel ik heb de volgende index file:
So far, so good.
Maar er is iets wat ik niet begrijp. Het volgende; de inhoud van de Example class:
Dit levert een foutmelding op ("de class Car kan niet worden gevonden").
Hier begrijp ik niet goed hoe PHP handelt. Ik heb de autoload functie immers gedefinieerd.
Is dit omdat de class Example een eigen scope heeft? En dat de autoload functie binnen die scope dus niet gedefinieerd is?
Ik kan de autoload functie uiteraard declareren in een apart bestand, en dat bestand vervolgens includen in zowel de index file, als in alle class files - maar imo verdwijnt de handigheid van het autoloaden dan een beetje.
Is het mogelijk om de autoload functie op slechts een plaats te definieren?
Wellicht zie ik iets over het hoofd.
Dank voor een korte reactie
Stel ik heb de volgende index file:
PHP:
1
2
3
4
5
6
| function __autoload($className) { require_once($_SERVER['DOCUMENT_ROOT'] . '/classes/' .$className . '.class.php'); } $example = new Example(); echo $example->render(); |
So far, so good.
Maar er is iets wat ik niet begrijp. Het volgende; de inhoud van de Example class:
PHP:
1
2
3
4
5
6
7
| class Example { public function render() { $car = new Car(); return $car->getType(); } } |
Dit levert een foutmelding op ("de class Car kan niet worden gevonden").
Hier begrijp ik niet goed hoe PHP handelt. Ik heb de autoload functie immers gedefinieerd.
Is dit omdat de class Example een eigen scope heeft? En dat de autoload functie binnen die scope dus niet gedefinieerd is?
Ik kan de autoload functie uiteraard declareren in een apart bestand, en dat bestand vervolgens includen in zowel de index file, als in alle class files - maar imo verdwijnt de handigheid van het autoloaden dan een beetje.
Is het mogelijk om de autoload functie op slechts een plaats te definieren?
Wellicht zie ik iets over het hoofd.
Dank voor een korte reactie