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:

<?php
class EngineSettings
{
 static $data = false;

 function __construct()
 {
  if (!$this->data)
  {
   $configfile = dirname(__FILE__) . "/../config/config.ini";
   if (file_exists($configfile))
   {
    $this->data = parse_ini_file($configfile, true);
   } else {
    trigger_error("Missing configuration file config.ini", E_USER_ERROR);
   }
  }
 }
 
 public function getData($section, $key)
 {
  if (@isset($this->data[$section]) && @isset($this->data[$section][$key]))
  {
   return $this->data[$section][$key];
  } else {
   return false;
  }
 }
}
?>
É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. :/