PHP - Making Class-Objekt Global Gesamte Anwendung?
Ist es ein einfacher Weg, um ein class-Objekt global für eine gesamte Anwendung in PHP? Ich brauche meine Klasse nur einmal instanziiert werden während der gesamten Anwendung und es funktioniert 100%.
Dank.
BEARBEITEN
Beschlossen das Singleton-Muster ist die beste Idee für das, was ich brauche, und wurde aufgefordert, fügen Sie ein wenig code, so ist es hier:
Mithilfe der Klasse in meiner app:
function catp_check_request(){
$catp=catp::getInstance();
$dlinks=array();
$ddlinks=array();
foreach($catp->rawlinks->link as $rawlink){
$dellink="catp-del-{$rawlink->name}";
array_push($dlinks,$dellink);
}
//More stuff..
}
Deklaration der Klasse:
class catp {
private static $instance;
private $errors;
private $status_messages;
private $plugin_name;
private $plugin_shortname;
private $links;
private $linksurl;
private $rawlinks;
private function __construct(){}
public static function getInstance() {
if (self::$instance == null) {
self::$instance = new catp();
}
return self::$instance;
}
public function catp(){
$this->errors=false;
$this->plugin_name='CloakandTrack Plugin';
$this->plugin_shortname='CaTP';
$this->status_messages=array(
'updated' => 'You just updated',
'enabled' => 'You just enabled',
'disabled' => 'You just disabled',
'debug' => 'Plugin is in debug mode'
);
$this->linksurl=dirname(__FILE__).'/links.xml';
$this->rawlinks=simplexml_load_file($this->linksurl);
$this->links=$this->catp_parse_links($this->rawlinks);
}
//More functions..
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die singleton-Objekt.
Überprüfen Sie diesen link für mehr details http://www.php.net/manual/en/language.oop5.patterns.php#language.oop5.patterns.singleton
Fatal error: Cannot access private property catp::$rawlinks in . . .
- Ist dies etwas, das passiert Häufig? Es scheint, jede variable ist tatsächlich wiederNULL
.public $rawlinks;
oderpublic function getRawlinks() { return $this->rawlinks; }
static
. Ich bin kein PHP-Mann, aber in mehreren anderen Sprachen, die ich verwendet habe, ist die Instanz-Variablen zugegriffen werden kann in statischen Funktionen.Sehen die singleton-Muster auf SO (und in welchen Fällen es gilt als schlechte Praxis).
Können Sie erwägen, auch mit Registrierung.
Beachten Sie, dass Ihr problem könnte sein, eine architektonische, vielleicht gibt es bessere Möglichkeiten das problem zu lösen, die Sie Gesicht, z.B. dependency-injection-container.
Können Sie verwenden, __autoload-Funktion zu beinhalten, die Klasse dynamisch für Sie.
http://www.electrictoolbox.com/php-autoload/