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