标签:php
请考虑以下代码方案:
//widgetfactory.class.php
// define a class
class WidgetFactory
{
var $oink = 'moo';
}
?>
//this is index.php
include_once('widgetfactory.class.php');
// create a new object
//before creating object make sure that it already doesn't exist
if(!isset($WF))
{
$WF = new WidgetFactory();
}
?>
widgetfactory类在widgetfactoryclass.php文件中,我已将此文件包含在我的index.php文件中,我的所有站点操作都通过index.php运行,即对于此文件包含的每个操作,现在我想创建widgetfactory类的对象只要它已经不存在了.我为此目的使用isset(),还有其他更好的选择吗?
解决方法:
使用全局变量可能是实现此目的的一种方法.执行此操作的常见方法是单例实例:
class WidgetFactory {
private static $instance = NULL;
static public function getInstance()
{
if (self::$instance === NULL)
self::$instance = new WidgetFactory();
return self::$instance;
}
/*
* Protected CTOR
*/
protected function __construct()
{
}
}
然后,稍后,您可以检索实例,而不是检查全局变量$WF:
$WF = WidgetFactory::getInstance();
WidgetFactory的构造函数声明为protected,以确保实例只能由WidgetFactory本身创建.
标签:php
来源: https://codeday.me/bug/20190715/1470050.html