考虑以下代码场景:
<?php
//widgetfactory.class.php
// define a class
class WidgetFactory
{
var $oink = 'moo';
}
?>
<?php
//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()来达到这个目的,有没有其他更好的替代方案呢?
发布于 2012-04-06 05:18:29
使用全局变量可能是实现这一点的一种方法。执行此操作的常见方法是单例实例:
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本身创建。
发布于 2012-09-11 16:39:52
这应该可以完成这项工作:
if ( ($obj instanceof MyClass) != true ) {
$obj = new MyClass();
}https://stackoverflow.com/questions/10036075
复制相似问题