Goedenavond phpers,

Ik ben weer eens verder gegaan met php en zit het een en ander te proberen.

Nu heb ik in een mapje waar php bestanden met classes in staan. Deze bestanden hebben elk 1 classe met verschillende functions.

Nu wil ik met een classe van index.php al die classes uit dat ene mapje extenden(inladen). hoe kan ik dit het beste doen?

Iemand een idee?

alvast bedankt.
Maar dan zijn ze toch nog niet ge-extend in de classe van index.php?
Niek90 schreef op 07.05.2009 19:29
Maar dan zijn ze toch nog niet ge-extend in de classe van index.php?
Wellicht begrijp ik je verkeerd. Heb je een codevoorbeeldje?
Het kan ook zijn dat ik er naast zit maar ik zal het nog eens duidelijker proberen uitleggen.

Ik heb een index.php.
Deze heeft een Klasse, ik noem deze even "hoofdclass".

In de map modules staan (bijvoorbeeld) 3 phpbestandjes, met elk 1 Klasse erin. dus (bijvoorbeeld):
module1.php met Klasse module1,
module2.php met Klasse module2
module3.php met Klasse module3

Nu wil ik de klasse module1, module2 en module3 extenden in hoofdclasse. dus dan krijg je eigenlijk:

<?php
class hoofdclasse extends module1 extends module2 extends module 3{
}
?>

Maar dat gaat natuurlijk niet zo, en wanneer er een nieuwe module4.php in de map modules word gegooid moet deze ook automatisch erbij worden ge-extend.

Ik hoop dat het nu beetje duidelijker is, ik weet niet goed hoe ik het anders uit moet leggen.

<?php
class Hoofd
{
    public function __construct()
    {
        $modules = glob('/modules/*.php');
        foreach($modules as $filename)
        {
            Loader::LoadClass('modules/'. $name);
        }
    }
}
?>

Dit is om je een idee te geven hoe je het kan aanpakken. Deze code is niet getest. Dat stukje van "Loader::Loadclass" verwijst naar een klasse die bestanden in kan laden, zoals ik het zelf heb gemaakt. Daar vindt ook de foutafhandeling en dergelijke plaats.
Het is onmogelijk om meerdere klassen tegelijk te extenden. Ik denk dat je dan de zaken iets verkeerd aanpakt.

Als het is wat Midas bedoeld, kan je dus ook __autoload() gebruiken. Zet in je index (buiten de klasse zelf) bijvoorbeeld:
<?php
function myLoader($class) {
if(file_exists('modules/' . $class . '.php')) {
require_once('modules/' . $class . '.php'));
return true;
}
return false;
}
spl_autoload_register('myLoader');
?>
Vreemde vraag.

Kijk, wat je wel kan doen, is binnen een klasse andere klassen gebruiken.
Als het er om gaat dat je methodes van de ene klasse in een andere klasse wil gebruiken, is dat mogelijk.

Het is ook geen enkel probleem om binnen een klasse objecten te maken van een andere klasse.

Zou je daarmee al geholpen zijn? Want wat je vraagt, is echt wel vreemd.

Standaard voorbeelden van extends:

class manager extends employee

Wat noodzakelijk is, is de idee dat een manager een employee is, maar dan met nog wat extra dingen.

Het extended object moet een parent object zijn, maar dan met nog extra functionaliteit.

Reageren