我们如何在PHP中停止类的用户创建对象?

时间:2010-08-20 16:30:05

标签: php

我希望用PHP中的类“OzoneRequest”和“OzoneResponse”的用户停止创建对象。在OzoneApplication的构造函数中只创建了一个对象。我该怎么办?你可能理解我的问题

我不希望用户创建对象只创建一个只存在一个对象的对象。如果用户想要创建对象,则不会执行此操作...这将产生错误......

3 个答案:

答案 0 :(得分:3)

class OzoneRequest
{
 private static $instance = null;

 private function __construct() { }

 private function __clone() { }

 public static function getInstance()
 {
   if (!isset(self::$instance)) {
     self::$instance = new OzoneRequest();
   }
   return self::$instance;
 }

}

class OzoneApplication
{
  protected $req;

  public function __construct()
  {
    $this->req = OzoneRequest::getInstance();
  }

}

答案 1 :(得分:2)

创建一个私有构造函数,然后从类中的静态方法调用它来创建一个对象。另外,查找 singleton 设计模式。

答案 2 :(得分:1)

那就是Singleton的UseCase。

但是,我没有看到限制用户(读取:开发人员)如果他不想创建请求或响应对象的意义。即使从概念上讲,只有一个Request对象(这是可论证的;如果我需要针对远程服务分派多个请求,那么问题是:为什么你禁止开发人员更改你的代码?我是一个成年人。如果我想打破你的代码,让我打破它。

现在还要注意Singleton pattern is widely regarded an Anti-Pattern