[PHP] Code werkt niet in functie, wel rechtstreeks
Ik heb een functie in PHP, in de werkelijkheid is code ingewikkelder, maar nu hou ik het simpel, want deze simpele versie werkt ook niet:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
function load_language($lang) {
require_once('include/languages/'.$lang.'.php');
}
?>
function load_language($lang) {
require_once('include/languages/'.$lang.'.php');
}
?>
als ik hem op deze manier aanroep krijg ik geen error:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
//include important settings, variables, and functions
require_once ('Settings.php');
require_once 'include/functions.php';
//parlez vous...
load_language(setting("language"));
?>
//include important settings, variables, and functions
require_once ('Settings.php');
require_once 'include/functions.php';
//parlez vous...
load_language(setting("language"));
?>
Maar de strings in het taal bestand worden dan ook niet geladen.
Maar doe ik index.php het volgende zonder functie:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
//include important settings, variables, and functions
require_once ('Settings.php');
require_once 'include/functions.php';
//parlez vous...
require_once('include/languages/'.setting("language").'.php');
?>
//include important settings, variables, and functions
require_once ('Settings.php');
require_once 'include/functions.php';
//parlez vous...
require_once('include/languages/'.setting("language").'.php');
?>
Dan wel...
Wat doe ik nu mis?
~Thomas
Er zijn honderden foutmeldingen.
Stop! Keer om!
Krijg je die?
Ik zeg duidelijk dat er GEEN foutmeldig komt...
Met "Dan wel..." bedoelde ik dat de strings dan wel worden geladen...
En de error reporting en display_errors staan wel aan?
Dus ja...
Maar je zou toch zeggen dat:
Met als load_language($lang):
Code (php)
1
2
3
4
5
2
3
4
5
<?php
function load_language($lang) {
require_once('include/languages/'.$lang.'.php');
}
?>
function load_language($lang) {
require_once('include/languages/'.$lang.'.php');
}
?>
(wat niet werkt)
Precies hetzelfde is als
Gewijzigd op 03/10/2010 14:46:38 door Thomas de Roo
Je zit namelijk in een functie dus alles in die functie wordt binnen die functie ingeladen:
Code (php)
Zie global.
de functie moet een bestand includeren waarin arrays met teksten staan...
Zie mijn voorbeeld.
Het wordt dus wel ingeladen.
Er is een bestand voor elke taal: dutch.php bijv.
In dat bestand staan variables (arrays) met teksten die global ik voordat ik ze gebruik,
bijv.
Code (php)
Hiervoor moet het taal bestand zijn geincludeerd want wel rechtstreeks lukt maar niet met de functie loadLanguage();
Wat ik raar vind want de functie die header1.php includeert werkt wel...
En eigenlijk is global ook wel vies.
Code (php)
Jij snapt het dus niet.
Welke variabelen moet ik dan global hebben> =)
Het is de plek waar de global keyword staat.
Waar moet die dan staan?
Daarom is global dus vies.
Code (php)
1
2
3
4
5
2
3
4
5
<?php
function load_language($lang) {
require_once('include/languages/'.$lang.'.php');
}
?>
function load_language($lang) {
require_once('include/languages/'.$lang.'.php');
}
?>
geen variabelen die global moeten zijn?
Variabelen binnen functies zijn alleen binnen functies toegankelijk.
Wil je ze daarbuiten gebruiken. Gebruik dan global.
Jij include in die functie allerlei variabelen.
Dus die moeten binnen die functie het keyword global hebben.
Maar wat moet er dan achter global staan in die functie?
Moet ik dan alle variabelen (onbepaald aantal) uit het geincludeerde bestand een global keyword geven?
Dat staat er toch op php.net!
Alle variabelen binnen je functie die je GLOBAL wilt gebruiken moeten het keyword global hebben.
Hoe kan ik een loopje alle variabelen op global zetten?
Snap je nu nog niet dat global vies / onhandig / slecht / onzin / troep is?
Toevoeging op 03/10/2010 16:21:50:
En het was opgelost =)