我想停止PHP中类“OzoneRequest”和“OzoneResponse”的用户创建对象。在OzoneApplication的构造函数中只创建一个对象。我该怎么做?可能是你明白我的问题我们如何停止PHP中类的用户创建对象?
我没有用户希望对象的创建只有我创建了一个对象存在的对象。如果用户要创建的对象,那么这将无法执行......这会给出一个错误......
我想停止PHP中类“OzoneRequest”和“OzoneResponse”的用户创建对象。在OzoneApplication的构造函数中只创建一个对象。我该怎么做?可能是你明白我的问题我们如何停止PHP中类的用户创建对象?
我没有用户希望对象的创建只有我创建了一个对象存在的对象。如果用户要创建的对象,那么这将无法执行......这会给出一个错误......
做一个私有构造函数,然后从类中的一个静态方法调用它来创建你的一个对象。另外,查询单身人士的设计模式。
这将是一个Singleton的用例。
但是,我没有看到限制用户(阅读:开发人员)的要点,如果他不想创建请求或响应对象。即使概念上只有一个请求对象(这是有争议的;如果我需要针对远程服务分派多个请求会怎么样),问题是:为什么你禁止开发人员更改你的代码?我是一个成年人。如果我想打破你的代码,让我打破它。
还要注意的是,时下Singleton pattern is widely regarded an Anti-Pattern。
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();
}
}
由于这在技术上是一个正确的解决方案,所以我会加倍努力。道德上它是一个不同的故事;) – Gordon 2010-08-20 16:57:04
我尝试开发一个MVC框架我大学的专业项目,我称其为OZONE_MVC(http://code.google.com/p/ozonemvc/),在此当请求来自客户端,然后框架本身创建了一个可能必须是唯一的请求和响应对象。用户仅使用该对象。它在初始阶段..... – user421336 2010-08-20 16:46:44
@user为什么他们必须是唯一的?您如何期待*用户*创建第二个请求或响应?我的意思是,*用户*无法访问您的代码。 – Gordon 2010-08-20 16:51:05