scoop tussen classes
Hi,
Ik heb ongeveer deze code:
Is dit mogelijk op een manier dat ik niet de < $this->config->get_rewriterules() > moet meegeven als parameter maar rechtstreeks vanuit < $this->uri->rewrite() > toegang heb tot de rewriterules?
Global gebruiken lijkt mij niet zo handig. Stel dat iemand niet $appl maar $cron gebruikt.
Deze code bestaat niet maar leek mij handig:
Let op het woord 'caller' dat zou moeten aangeven dat we een niveau naar omhoog dienen te gaan. Vergelijkbaar met folders waar we met './..' de bovenliggende map nemen.
Thanks
Marc
Ik heb ongeveer deze code:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$appl = new Application();
//in Application::__construct() :
$this->config = new Configuration();
$this->uri = new Uriparser();
// nu wil ik het volgende ongeveer doen:
$this->uri->rewrite($this->config->get_rewriterules());
?>
$appl = new Application();
//in Application::__construct() :
$this->config = new Configuration();
$this->uri = new Uriparser();
// nu wil ik het volgende ongeveer doen:
$this->uri->rewrite($this->config->get_rewriterules());
?>
Is dit mogelijk op een manier dat ik niet de < $this->config->get_rewriterules() > moet meegeven als parameter maar rechtstreeks vanuit < $this->uri->rewrite() > toegang heb tot de rewriterules?
Global gebruiken lijkt mij niet zo handig. Stel dat iemand niet $appl maar $cron gebruikt.
Deze code bestaat niet maar leek mij handig:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$appl = new Application();
// enz; en dan in $this->uri->rewrite() :
$this->rewriterules = $this->caller->config->get_rewriterules();
?>
$appl = new Application();
// enz; en dan in $this->uri->rewrite() :
$this->rewriterules = $this->caller->config->get_rewriterules();
?>
Let op het woord 'caller' dat zou moeten aangeven dat we een niveau naar omhoog dienen te gaan. Vergelijkbaar met folders waar we met './..' de bovenliggende map nemen.
Thanks
Marc
Gewijzigd op 01/01/1970 01:00:00 door Marc Cools
Gesponsorde koppelingen:
Misschien weet het niet zeker dat $this-> moet $appl-> zijn omdat je daar boven een nieuwe class begint..
Je gebruikt dit toch buiten je class $appl ?? of zie / denk ik dat verkeert
Je gebruikt dit toch buiten je class $appl ?? of zie / denk ik dat verkeert
Gewijzigd op 01/01/1970 01:00:00 door Yoram
Die $this is in de constructor van de class Application. Dus verwijzend naar interne variabelen.
Buiten de class, in een instance gemaakt met new ken ik het object toe aan $appl.
Buiten de class, in een instance gemaakt met new ken ik het object toe aan $appl.
Gewijzigd op 01/01/1970 01:00:00 door Marc Cools
Sorry! had het helemaal verkeert begrepen!
Geen probleem.
Jaah dat zei ik in feite :P Maar staat die bij jou wel goed dan ? want jij begint hem toch buiten je class??
Marc Cools schreef op 13.03.2009 12:55:
Is dit mogelijk op een manier dat ik niet de < $this->config->get_rewriterules() > moet meegeven als parameter maar rechtstreeks vanuit < $this->uri->rewrite() > toegang heb tot de rewriterules?
Nee, dat is niet zomaar mogelijk. Je UriParser is niet bekend met de scope waarin hij zich bevindt.
Maar op zich is dat toch ook niet zo erg? Wat is je bezwaar tegen de manier die je zelf al aandraagt, om de rules handmatig mee te geven? Het voordeel hiervan is dat je je UriParser veel breder kan gebruiken, omdat hij niet direct afhankelijk is van je Application class.
Andere mogelijkheid is om bij het instantiƫren van je UriParser de instantie van Application mee te geven via de constructor. Dan heb je binnen UriParser altijd toegang tot $appl, maar dan maak je hem ook afhankelijk van deze opbouw. En je moet in Application de properties die UriParser wil gebruiken public maken.
Door handmatig door te geven kan de class onafhankelijk gebruikt worden.
Anderzijds is het mijn eigen(zinnig) framework dat ik wil schrijven waarbij al die dingen aan elkaar vast hangen. Ik gebruik immers altijd de UriParser bij elke webapplicatie.
Moet ik nog eens goed over nadenken.
Bedankt voor jouw oplossing.
Anderzijds is het mijn eigen(zinnig) framework dat ik wil schrijven waarbij al die dingen aan elkaar vast hangen. Ik gebruik immers altijd de UriParser bij elke webapplicatie.
Moet ik nog eens goed over nadenken.
Bedankt voor jouw oplossing.



