Jetzt stellt sich mir doch noch eine Frage, für die ich wohl gerade nicht so schnell eine Antwort finden werde:
Ich habe zusätzlich eine __get() Methode erstellt, die nichts anderes als das tut:
PHP-Code:
public function __get($var){
return $this->$var;
}
Sie gibt also private Eigenschaften aus. Ich habe mir fürs Debuggen eine kleine Funktion Etc::debug() geschrieben, die verschiedene Checks durchführt:
PHP-Code:
public static function debug($var){
$isset = isset($variable); // Type Debugger: Leitet verschiedene Tests ein
$notempty = !(empty($variable));
$notnull = !(is_null($variable));
$if = ($variable)?true:false;
$boolean = (boolean)$variable;
// Ausgabe
}
// 1. Fall
$controller = URL::get();
Etc::debug($controller->page);
Gibt folgendes aus: Siehe angehängtes Bild
Alles scheint gut, denn $controller->page ist ja auch wirklich mit 'home' belegt.
Das hier ergibt aber ein völlig anderes Resultat:
PHP-Code:
//2. Fall
$controller = URL::get();
var_dump(isset($controller->page)); // Ausgabe: bool(false)
var_dump(!empty($controller->page)); // Ausgabe:bool(false)
var_dump(!is_null($controller->page)); // Ausgabe: bool(true)
Wieso das? Bis jetzt hat meine debug()-Funktion immer einwandfrei funktioniert. Wenn ich übrigens URL->page auf public stelle und die __get() Methode entferne, wird im zweiten Fall alles true angezeigt.