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

<?php
$dummy_var='dummy_var';
class dummy {
  function __construct() {
    echo var_dump($GLOBALS['dummy_var']);
  }
}
?>
index.php (1. verzió, __autoload nélkül)

<?php
require_once('dummy.php');
$dummy=new dummy();
//eredménye: string(9) "dummy_var"
?>
index.php (2. verzió, __autoload használatával)

<?php
function __autoload($class) {
  require_once($class.'.php');
}
$dummy=new dummy();
//eredménye: NULL
?>
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