Versio

[classes] >1 extends

Overzicht Reageren

Niek Ha

Niek Ha

07/05/2009 19:14:00
Quote Anchor link
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.
 
PHP hulp

PHP hulp

24/05/2012 06:08:32
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Mark PHP

Mark PHP

07/05/2009 19:18:00
 
Niek Ha

Niek Ha

07/05/2009 19:29:00
Quote Anchor link
Maar dan zijn ze toch nog niet ge-extend in de classe van index.php?
 
Mark PHP

Mark PHP

07/05/2009 19:32:00
Quote Anchor link
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?
 
Niek Ha

Niek Ha

07/05/2009 19:44:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?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.
 
Midas

Midas

07/05/2009 21:00:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?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.
Gewijzigd op 01/01/1970 01:00:00 door Midas
 
Mark PHP

Mark PHP

07/05/2009 21:15:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
function myLoader($class) {
  if(file_exists('modules/' . $class . '.php')) {
    require_once('modules/' . $class . '.php'));
    return true;
  }

  return false;
}

spl_autoload_register('myLoader');
?>
Gewijzigd op 01/01/1970 01:00:00 door Mark PHP
 
Emmanuel Delay

Emmanuel Delay

08/05/2009 05:55:00
Quote Anchor link
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.
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay
 



Overzicht Reageren