Anzeige:
Ergebnis 1 bis 2 von 2

Thema: __set und __get nicht in statischen Klassen?

  1. #1
    Registrierter Benutzer
    Registriert seit
    13.08.2004
    Ort
    Bonn
    Beiträge
    15

    __set und __get nicht in statischen Klassen?

    Hallo,

    kann es sein, daß man __get und __set nicht statisch verwenden kann?

    Ich habe folgenden Code:

    PHP-Code:
    class Kernel{

    private static 
    $classes = array();


    public static function 
    __get($class)
        {
        if (!isset(
    self::$classes[$class]))
            {
            
    $new = new $class();
            
    self::$classes[$class] = &$new;
            return 
    $new;
            }
            else
            {
            return 
    self::$classes[$class];
            }
        }

    public static function 
    __set($class, &$value)
        {
        if (!isset(
    self::$classes[$class]))
            {
            
    self::$classes[$class] = $value;
            return 
    $value;
            }
            else
            {
            return 
    self::$classes[$class];
            }
        }

    }
    // Initialisierung

    Kernel::$Sql         = new Sql(Settings::SQL_DATABASESettings::SQL_USERSettings::SQL_PASSWORD);  //Zeile 84
    Kernel::$User         = new User(Kernel::$IoKernel::$Sql); 
    Es kommt die Meldung:
    Code:
    Fatal error: Access to undeclared static property: Kernel::$Sql in /home/pierre/public_html/laber-land/develop/index.php on line 84
    Verwende ich die Methoden nicht statisch und erzeuge ein Objekt von Kernel, funktioniert das tadellos.

    Hat jemand eine Idee hierzu?

    Viele Grüße

    Pierre

  2. #2
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Nein Natürlich nicht, im gegensatz zu Java ist static unter PHP auch static und kann daher auch nicht zur Laufzeit verändert werden.
    __get und __set dienen einem ganz anderen Zweck
    PHP-Code:
    <?php
    class SETGET {

      function 
    __set($input,$wert) {
        echo (
    "Der wert " $wert " kommt von der " .  $input " Funktion!<br>");
      }

      function 
    __get($input) {
        echo (
    "Was willst du " $input " ?<br>");
      }
    }

    // Ansprechen der Klasse
    $test = new SETGET();
    // Mit __set die Methode deklarieren!
    $test->Undefined 3;
    // Die __get Methode abfragen!
    echo $test->Undefined;

    ?>
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •