login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Require in functie (Opgelost)

Offline Dark_Paul - 07/10/2007 20:07
Avatar van Dark_PaulPHP ver gevorderde Ik ben bezig met een systeem. Ik hanteer een bepaalde structuur in mijn mappen en bestanden. Zo heb ik voor elke 'module' (zo noem ik het maar even) een aparte map en voor elke actie van die module een apart bestand.
Ik heb dus een bestand (switch.inc.php) gemaakt die ervoor zorgt dat de juiste actie wordt geïnclude. Die actie wordt geïnclude op de 'index' van elke module.
Nou wilde ik dat bestand graag als functie gebruiken. Het bestand ziet er zo uit:
Plaatscode: 3562
$page is de 'module' (home, mededelingen, messenger etc.).
Nou had ik dat in een functie gegoten:
Plaatscode: 3563
Als ik op de index van de module require('switch.inc.php'); zet, werkt het wel goed. Als ik getAction(); doe, wordt de juiste actie wel geïnclude, maar gaat er toch iets fout. Alle variabelen die zijn aangemaakt op de module-index (die op zijn beurt weer wordt geïnclude op index.php) en index.php zijn niet meer bereikbaar.
Hoe kan ik dit oplossen?
Ik kan natuurlijk in getAction() $sub laten retourneren, en vervolgens require(getAction); doen. Maar ik had verwacht dat het met alleen getAction(); ook zou kunnen..

4 antwoorden

Gesponsorde links
Offline Grayen - 07/10/2007 22:34
Avatar van Grayen PHP ver gevorderde Als ik je uitleg goed begrepen heb, dan kom ik tot het volgende:

Omdat je het bestand include in de functie, krijgen uiteraard de variables die je in het geinclude bestand aanmaakt een localscope. Dus je kunt ze alleen gebruiken binnen de functie. Om ze te kunnen gebruiken in globalscope zou je inderdaad require getAction(); moeten doen.

Bron: http://nl3.php.net/global
Offline Dark_Paul - 08/10/2007 17:22
Avatar van Dark_Paul PHP ver gevorderde Wat jij begrijpt is inderdaad wat ik bedoel, Grayen.
Nou weet ik dus ook hoe je dat noemt, local- en globalscope.
Om dan maar gelijk met die termen te gaan gooien:
Kan ik in die functie niet zorgen dat die require in globalscope, zonder dat ik require getAction(); doe?
Offline Grayen - 08/10/2007 18:44
Avatar van Grayen PHP ver gevorderde Nee, dit kan zover ik weet niet. Wat je wel zou kunnen doen is gebruik maken van het global keyword. Maar omdat het hier om modules gaat, zal dit een erg onhandig zijn. Ik zou dus gewoon require getAction(); gebruiken.
Offline Dark_Paul - 09/10/2007 11:57
Avatar van Dark_Paul PHP ver gevorderde Dat doe ik nu dus ook gewoon.
Bedankt voor je hulp in ieder geval!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.179s