__get() und statische Klassen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • __get() und statische Klassen

    Hallo,

    wie ich gerade feststellen musste funktioniert die magische Funktion __get() nur wenn eine Instanz der Klasse existiert.

    Code:
    PHP-Code:
    echo c::__get('env');
    echo 
    c::$env
    liefert das Ergebnis ('foo' ist korrekt):

    PHP-Code:
    foo
    Fatal error
    Access to undeclared static propertyc::$env in D:\htdocs\svn\shop\trunk2\lib\be\index.php on line 16 
    gibt es eine Möglichkeit __get() auch bei rein statischen klassen zu verwenden, ohne dass eine Instanz angelegt werden muss? Oder
    muss ich eine Singelton-Klasse daraus machen (was ich nur sehr ungern tun würde).

    Danke für Eure Hilfe,
    Gruß tracer

  • #2
    Nein das funktioniert nicht.
    Keine Überladungsmethode darf statisch definiert sein. Alle Überladungsmethoden müssen als public definiert sein.
    Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

    Kommentar


    • #3
      Re: __get() und statische Klassen

      Original geschrieben von tracer23
      Oder
      muss ich eine Singelton-Klasse daraus machen (was ich nur sehr ungern tun würde).
      musst ja nicht unbedingt ein singleton daraus machen.

      PHP-Code:
      class config
       
      {
        private static 
      $map=array('dir' => '/something/path''file' => 'somefile.php');

        public static function 
      getProperty($p)
         {
          return isset(
      self::$map[$p]) ? self::$map[$p] : false;
         }
       }

      echo 
      config::getProperty('file'); 
      Zuletzt geändert von 3DMax; 29.04.2007, 23:45.

      Kommentar

      Lädt...
      X