Ich beginne gerade meine Reise in OOP - und ich versuche gerade, meine eigene MVC zu rollen - rein zu Lernzwecken. Ich arbeite an einem Tutorial im Apress PHP-Objects Patterns Practice Buch. Ich habe eine Registrierung Singleton-Objekt mit dem privaten __construct/__ Klon-Technik erstellt:Zugriff auf Singleton-Methoden in PHP
class Registry
{
private static $instance;
private $values = array();
private function __construct(){}
private function __clone(){}
public static function getInstance(){
if(!isset(self::$instance)){
self::$instance = new Registry();
}
return self::$instance;
}
public function get($key) {
if (isset($this->values[$key])) {
return $this->values[$key];
}
return null;
}
public function set($key, $val) {
$this->values[$key] = $val;
}
}
ich eine Instanz dieses Objekts direkt das heißt:
Registry::getInstance();
jedoch (im Anschluss an die Syntax im Tutorial) - wenn ich versuche, und Zugriff auf die öffentlichen Methoden der Verwendung von ‚->‘ Verfahren - zB:
Registry->setVal('page',$page);
ich bekomme einen Parse-Fehler. Ich kann nur auf die Methoden zugreifen, die den Scope-Resolution-Operator verwenden - also '::'.
ich dies unter der Annahme ist, da das Objekt-Wrapper hat nicht gewesen instanziiert - aber ich will nur mit ihr alle dieses Problem verifizieren/diskutieren ...
Das beantwortet meine Frage .... Während ich hier bin - wenn ein früherer Prozess die Registry-Klasse mit Registry :: getInstance initialisiert - können nachfolgende nicht verwandte Klassen auf die Registry :: set() -Methoden verweisen, ohne durch dieselben zu springen hoop - oder muss ich dieses Objekt für jedes Objekt initialisieren, das auf seine Methoden zugreifen möchte? – sunwukung