标签:
php中怎么实现创建一个对象然后全局都能调用?
在PHP中相当常见的一种情形时,我们只需要创建一个对象一次,然后在我们的整个程序中使用它。一个很好的例子就是smarty变量,一旦被初始化后就可以在任何地方使用。这种情形的一个很好实现方案就是单例模式。示例代码如下:
function smartyObject()
{
if ($GLOBALS[‘config‘][‘SmartyObj‘] == 0)
{
$smarty = new SmartyGame();
$GLOBALS[‘config‘][‘SmartyObj‘] = $smarty;
}
else
$smarty = $GLOBALS[‘config‘][‘SmartyObj‘];
return $smarty;
}
注意,我们拥有一个全局smarty变量(该示例中它在config.php中被初始化),如果它的值为0,我们将创建一个新smarty对象。否则,它意味着该对象已经被创建,我们只需要返回它。
get_core()和get_id()方法应该都会返回当前对象,即 $this。所以才可以使用这样子的连续调用。至于结果是什么还要看实际的代码,但有一点可以肯定的是它会设置或修改对象的某个状态(属性)。这样子下面举一个例子:
class A {
public function get_core()
{
// 其他代码
return $this;
}
public function get_id()
{
// 其他代码
return $this;
}
public function exec()
{
// 这里就可以这样子连续调用了
$this->get_core()->get_id();
}
}
$obj1=new A();
$obj1->get_core()->get_id();
标签:
原文地址:http://www.cnblogs.com/lichihua/p/5654091.html