PHP5 __autoload és globális változók
sziasztok!
az __autoload függvényt használom (php 5.1.4), és szeretném, ha valaki felvilágosítana arról, hogy miért nem lesznek az ilyen módon behúzott változók globálisak.
konkrét kód:
dummy.class.phpindex.php (1. verzió, __autoload nélkül)index.php (2. verzió, __autoload használatával)használtam a keresőt, weblaboron nem sok téma szól az __autoloadról, a dokomentácó pedig nem túl bőbeszédű.
gex
■ az __autoload függvényt használom (php 5.1.4), és szeretném, ha valaki felvilágosítana arról, hogy miért nem lesznek az ilyen módon behúzott változók globálisak.
konkrét kód:
dummy.class.php
<?php
$dummy_var='dummy_var';
class dummy {
function __construct() {
echo var_dump($GLOBALS['dummy_var']);
}
}
?>
<?php
require_once('dummy.php');
$dummy=new dummy();
//eredménye: string(9) "dummy_var"
?>
<?php
function __autoload($class) {
require_once($class.'.php');
}
$dummy=new dummy();
//eredménye: NULL
?>
gex
Manual commentek között van
_autoload is függvény
$dummy_var='dummy_var';
kód globális névtében fut le, míg a második esetben lokálisban (az _autoload függvény belsejében). Így jó lesz:$GLOBALS['dummy_var']='dummy_var';
.Felhő
u.i.: var_dump elé nem kell echo!
köszi
köszönöm, ez nagyon érthető volt. eszembe sem jutott, hogy a függvény belsejében fog csak létezni. pedig kerestem mindenhol. :]
ez egy eléggé lebutított példa volt, véletlenül elírtam.
gex