ugrás a tartalomhoz

PHP 5.1 static változók nem úgy működnek, ahogy elvárnám.

janoszen · 2005. Nov. 28. (H), 17.20
Sziasztok!

Adott a következő osztály:
  1. <?php  
  2. class EngineSettings  
  3. {  
  4.  static $data = false;  
  5.   
  6.  function __construct()  
  7.  {  
  8.   if (!$this->data)  
  9.   {  
  10.    $configfile = dirname(__FILE__) . "/../config/config.ini";  
  11.    if (file_exists($configfile))  
  12.    {  
  13.     $this->data = parse_ini_file($configfile, true);  
  14.    } else {  
  15.     trigger_error("Missing configuration file config.ini", E_USER_ERROR);  
  16.    }  
  17.   }  
  18.  }  
  19.    
  20.  public function getData($section$key)  
  21.  {  
  22.   if (@isset($this->data[$section]) && @isset($this->data[$section][$key]))  
  23.   {  
  24.    return $this->data[$section][$key];  
  25.   } else {  
  26.    return false;  
  27.   }  
  28.  }  
  29. }  
  30. ?>  
És adja ezt a hibát:

Notice: Undefined property: EngineSettings::$data in [...]\EngineSettings.php on line 31

A 31. sor a konstruktor első sora. Mi ebben a hiba? 2 napja próbálok rájönni és sehogy nem akarja a kívánt eredményt produkálni. További bajom, hogy a statikus konstruktorokat úgy tűnik, nem támogatja a PHP. Lehetséges?

Köszi
 
1

kézikönyv

Hojtsy Gábor · 2005. Nov. 28. (H), 18.57
A kézikönyv szerintem világosan leírja, hogy a példányoknak nincs erről a statikus értékről másolata, az osztályhoz kapcsolódik a statikus érték. self::$data illetve kívülről EngineSettings::$data menni fog.
2

Köszi

janoszen · 2005. Nov. 28. (H), 21.38
Köszi, így már működik. A PHP 5.1 néha kissé inkonzekvensen ad hibaüzeneteket, mert 1x már javítottam, csak valszeg a cache miatt nem frissült. :/