ugrás a tartalomhoz

PHP5 __autoload és globális változók

Anonymous · 2006. Okt. 2. (H), 17.18
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.php
  1. <?php  
  2. $dummy_var='dummy_var';  
  3. class dummy {  
  4.   function __construct() {  
  5.     echo var_dump($GLOBALS['dummy_var']);  
  6.   }  
  7. }  
  8. ?>  
index.php (1. verzió, __autoload nélkül)
  1. <?php  
  2. require_once('dummy.php');  
  3. $dummy=new dummy();  
  4. //eredménye: string(9) "dummy_var"  
  5. ?>  
index.php (2. verzió, __autoload használatával)
  1. <?php  
  2. function __autoload($class) {  
  3.   require_once($class.'.php');  
  4. }  
  5. $dummy=new dummy();  
  6. //eredménye: NULL  
  7. ?>  
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
 
1

Manual commentek között van

presidento · 2006. Okt. 2. (H), 21.34
Jelölnöd kell, hogy ez globális változó.
2

_autoload is függvény

Hodicska Gergely · 2006. Okt. 2. (H), 21.50
Nincs min csodálkozni. Az egyik esetben a $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!
3

köszi

Anonymous · 2006. Okt. 2. (H), 22.01
Az egyik esetben a $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).

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. :]

u.i.: var_dump elé nem kell echo!

ez egy eléggé lebutított példa volt, véletlenül elírtam.

gex