是否有一种简单的方法可以在PHP中为整个应用程序创建一个全局类对象?我需要我的课程才能在整个应用程序中实例化一次并让它100%工作。
感谢。
修改
决定Singleton模式是我需要的最好的想法,并被要求添加一些代码,所以这里是:
在我的应用中使用该课程:
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..
}
声明课程:
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..
}
答案 0 :(得分:8)
你需要单身对象。
class YourClass {
private $_instance = null;
public static function getInstance() {
if (self::$_instance == null) {
self::$_instance = new YourClass();
}
return self::$_instance;
}
}
// to get your instance use
YourClass::getInstance()->...;
点击此链接了解详情http://www.php.net/manual/en/language.oop5.patterns.php#language.oop5.patterns.singleton
答案 1 :(得分:2)
请参阅singleton pattern on SO(在这种情况下,这被视为不良做法)。
您也可以考虑使用registry。
请注意,您的问题可能是架构问题,也许有更好的方法可以解决您遇到的问题,例如:依赖注入容器。
答案 2 :(得分:0)
您可以使用__autoload功能为您动态包含该类。