Hoi,
Beseffende dat het heel erg basic is wat ik wil, en het antwoord vast heel simpel is, wil ik het volgende probleem aan jullie voorleggen:
Ik heb een class die een aantal variabelen en een aantal functies bevat:
main.php:
En ik heb (in een ander bestandje) een uitbreiding op deze class gemaakt:
extension.php
Nu wil ik vanuit main.php deze extra functionaliteit invoegen in de bestaande class. Het leifst met een functie als
Ok, het is een beetje een idioot voorbeeldje natuurlijk, maar het gaat om het idee. Ik wil de class main.php nu als volgt kunnen gebruiken:
index.php
Ik heb al geprobeerd van extension.php een class te maken, omdat dat me het mooiste lijkt, maar die kan dan natuurlijk niet bij $naam, ook niet via parent::$naam.
Een class met extends werkt niet omdat er dan een nieuw object Test wordt aangemaakt, waardoor we "Bassie" kwijt zijn.
Gewoon includen lukt niet, omdat de functie bereken_lengte_naam dan niet toegankelijk is vanuit index.php.
Als laatste optie zie ik nog de mogelijkheid om $main als GLOBAL te zetten zodat ik er vanuit extension.php bijkan, maar dat lijkt me een erg ranzige oplossing. Weet iemand iets beters?
Alvast bedankt!
Beseffende dat het heel erg basic is wat ik wil, en het antwoord vast heel simpel is, wil ik het volgende probleem aan jullie voorleggen:
Ik heb een class die een aantal variabelen en een aantal functies bevat:
main.php:
PHP:
1
2
3
4
5
6
7
| class Test { private $naam; function verander_naam ( $naam ) { $this->naam = $naam; } } |
En ik heb (in een ander bestandje) een uitbreiding op deze class gemaakt:
extension.php
PHP:
1
| function bereken_lengte_naam() { return strlen( $this->naam); } |
Nu wil ik vanuit main.php deze extra functionaliteit invoegen in de bestaande class. Het leifst met een functie als
PHP:
1
| function add_plugin ( $filename ) { ... } |
Ok, het is een beetje een idioot voorbeeldje natuurlijk, maar het gaat om het idee. Ik wil de class main.php nu als volgt kunnen gebruiken:
index.php
PHP:
1
2
3
4
| $main = new Test(); $main->verander_naam("Bassie"); $main->add_plugin("extension.php"); $lengte = $main->bereken_lengte_naam(); |
Ik heb al geprobeerd van extension.php een class te maken, omdat dat me het mooiste lijkt, maar die kan dan natuurlijk niet bij $naam, ook niet via parent::$naam.
Een class met extends werkt niet omdat er dan een nieuw object Test wordt aangemaakt, waardoor we "Bassie" kwijt zijn.
Gewoon includen lukt niet, omdat de functie bereken_lengte_naam dan niet toegankelijk is vanuit index.php.
Als laatste optie zie ik nog de mogelijkheid om $main als GLOBAL te zetten zodat ik er vanuit extension.php bijkan, maar dat lijkt me een erg ranzige oplossing. Weet iemand iets beters?
Alvast bedankt!