PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : __set und __get nicht in statischen Klassen?



PierreS
10-05-2005, 18:06
Hallo,

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

Ich habe folgenden 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_DATABASE, Settings::SQL_USER, Settings::SQL_PASSWORD); //Zeile 84
Kernel::$User = new User(Kernel::$Io, Kernel::$Sql);

Es kommt die Meldung:
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

undefined
12-05-2005, 15:49
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
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;

?>