Ein passenderer Titel ist mir leider nicht eingefallen, habe nämlich keinen Blassen, wieso das hier nicht funktioniert:
Mit Etc::arrayGetElement lese ich ein Array aus, ist der Schlüssel $page nicht vorhanden, wird false zurückgegeben. Wenn ich nun die Seite index.php ohne ?page=sdfsf aufrufe, sollte ja im Setter der Fall false auftreten und $this->page mit HOMEPAGE belegt werden, eine im Konfigurationsfile belegte Konstante. Stattdessen belegt er $this->page mit false. Was läuft falsch? Wenn ich in der __set-Methode ganz am Anfang print "blabla"; hinschreibe, wird auch das nicht ausgeben, die __set-Methode kommt also gar nie zur Anwendung.. *kopfkratz*
PHP-Code:
class URL extends Core{
/* VARIABLEN */
/* Singleton */
private static $instance;
/* URL-Parameter */
public $page;
/* Variablen, die gebraucht werden, um Schleifen und interne Unzulänglichkeiten zu verhindern */
/* KONSTRUKTOR */
##############################################################################
protected function __construct($db = NULL){ // KONSTRUKTOR
parent::__construct($db); // Datenbankobjekt an Core weitergeben
try{
/* Parameter auslesen */
$this->page = Etc::arrayGetElement($_GET, 'page'); // Page zuweisen
} catch (ExcURL $exc){
Error::get()->catchException($exc);
}
}
##############################################################################
public static function get($db = NULL){ // Singleton-Pattern-Funktion getInstanceOf()
if(!isset(self::$instance)) {
self::$instance = new self($db); // Datenbankobjekt übergeben
}
return self::$instance;
}
#################################################################################################
/* 1. FUNKTIONEN */
####################################################################################
# GET-Parameter auslesen #
public function __set($attr, $value){ // Kommt zum Einsatz, wenn Objektattribute gesetzt werden
switch ($attr){
case 'page': // Wenn der page-Schlüssel abgefragt werden soll
switch ($value){
case false: // Page wurde nicht gesetzt
$this->page = HOMEPAGE;
break;
default: // Page wurde gesetzt, überprüfen ob vorgesehen und vorhanden
$this->page = $this->checkSite($value);
break;
}
break;
default:
throw new ExcURL('Wertzuweisung kann nicht von __set() angesprochen werden.');
break;
}
}
Kommentar