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:
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');
?>
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.