首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查PHP中是否已经存在某个类的对象?

问如何检查PHP中是否已经存在某个类的对象?
EN

Stack Overflow用户
提问于 2012-04-06 05:11:26
回答 2查看 18.7K关注 0票数 4

考虑以下代码场景:

代码语言:javascript
复制
<?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()来达到这个目的,有没有其他更好的替代方案呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-06 05:18:29

使用全局变量可能是实现这一点的一种方法。执行此操作的常见方法是单例实例:

代码语言:javascript
复制
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:

代码语言:javascript
复制
$WF = WidgetFactory::getInstance();

WidgetFactory的构造函数被声明为protected,以确保实例只能由WidgetFactory本身创建。

票数 7
EN

Stack Overflow用户

发布于 2012-09-11 16:39:52

这应该可以完成这项工作:

代码语言:javascript
复制
if ( ($obj instanceof MyClass) != true ) {
    $obj = new MyClass();
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10036075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档