Door
Pim Jong
op 04-03-2013 14:59
gewijzigd op 04-03-2013 15:01
2.500 views
Hallo,
Ik ben nog niet zo lang bezig met PHP en ben dus al scriptend proberen het te leren. Nu ben ik bezig met een CMS te maken in PHP en MySQL. Ik wil alle functies in een apart bestand ('functions.php') zetten zodat het overal vandaan bereikbaar moet zijn. Nu heb ik alleen een probleem: een variabele die in een functie ergens in functions.php wordt aangemaakt kan ik niet oproepen vanuit een ander bestand.
Zie hier het voorbeeld zoals ik het heb geprobeerd.
In functions.php heb ik een kleine functie aangemaakt:
function test() {
$variable = 'a variable';
}
En in een ander bestand in een map hiervoor heb ik dit in index.php:
<?php
include 'core/functions.php';
echo $variable;
?>
Alleen wanneer ik index.php open krijg ik deze foutmelding:
Notice: Undefined variable: variable in D:\Program Files (x86)\XAMPP\htdocs\test\pjcontent\index.php on line 4
Dus ik zal wel iets moeten doen om de variabele op te kunnen roepen, maar ik kan het zelf niet vinden. Wie kan me een beetje uitleggen hoe dit moet?
Alvast hartelijk bedankt!
EDIT:
De include werkt verder wel, als ik in functions.php een functie aanmaak en die een string laat echo'en, en die functie oproep vanaf mijn index.php, dan werkt het wel gewoon.
... Nu heb ik alleen een probleem: een variabele die in een functie ergens in functions.php wordt aangemaakt kan ik niet oproepen vanuit een ander bestand. ...
Daarvoor dient een functie precies.
Wanneer je een functie schrijft, ben je er gerust in dat alle variabelen, die je daar declareert, niet "lekken" buiten de functie.
Neem nu bv. een $i die je gebruikt in een for-lus. Je wil absoluut niet dat de waarde van die $i in conflict komt met een andere $i.
Super, met een return werkt het gewoon! Alleen als ik global ervoor zet niet, zou dat ermee te maken hebben dat het niet alleen in een functie zit maar ook in een ander bestand?
En dan een vraagje over returns (dit is eigenlijk de eerste keer dat ik script met functies en dus nog een hoop moet experimenteren), kan je ook meerdere variabelen in een return zetten?
Maar bedankt voor het antwoord :).
[size=xsmall]Toevoeging op 04/03/2013 15:13:28:[/size]
Kris Peeters,
Dat begrijp ik, lijkt me inderdaad handig dan om je variabelen 'veilig' te houden. Maar stel ik wil een lijstje maken van alle gebruikers, dus die code schrijf ik in een functie in functions.php. En die wil ik dan buiten functions.php op kunnen roepen. Dan hoef ik niet allerlei code in andere bestanden te typen en kan ik het makkelijker oproepen. Voor dit soort doeleindes is het bedoeld.
Zoals Kris ook al aangeeft is het 'global' maken niet echt verstandig. Een return is meestal voldoende. Je kan meerdere waarden in een return zetten in de vorm van een array().
Oke dan ga ik daar mee verder, is eigenlijk ook minder code dan de manier die ik wou gebruiken, en veiliger inderdaad. Bedankt trouwens voor de snelle reacties, nu kan ik meteen weer aan de slag!