您将使用什么面向对象的设计模式来实现只能实例化一次的类(使用PHP)?要实例化的类的设计模式一旦
1
A
回答
0
Ummmm ....单
2
这是一个Singleton。
2
您正在查找Singleton。
退房this tutorial关于用php实现一个singleton(按照你的标签)。
2
单身但我总是在使用前总是三思而后行。
3
你真的需要考虑你的具体情况。在决定您需要哪些功能时,请注意以下几种模式。通常,Singleton可以与服务定位器或工厂一起使用。
1
下面是PHP的Singleton模式的例子。从技术上讲,它最多允许创建两个实例,但嘎嘎叫着在构造函数时的实例已经存在:
<?php
class Singleton {
static protected $_singleton = null;
function __construct() {
if (!is_null(self::$_singleton))
throw new Exception("Singleton can be instantiated only once!");
self::$_singleton= $this;
}
static public function get() {
if (is_null(self::$_singleton))
new Singleton();
return self::$_singleton;
}
}
$s = new Singleton();
var_dump($s);
$s2 = Singleton::get();
var_dump($s2); // $s and $s2 are the same instance.
$s3 = new Singleton(); // exception thrown
var_dump($s3);
你也想看看__clone取决于你需要如何严格地控制实例调用。
1
您正在寻找Singleton模式。
class Foo {
private static $instance = null;
private function __construct() { }
public static function instance() {
if(is_null(self::$instance))
self::$instance = new Foo;
return self::$instance;
}
public function bar() {
...
}
}
$foo = Foo::instance();
$foo->bar();
相关问题
- 1. 使用实例化类的PHP设计模式
- 2. 设计模式实例
- 3. 创建同一类的不同实例,哪种设计模式?
- 4. 全球Smarty实例的设计模式
- 5. 显式实例化C++类模板实例化相关基类?
- 6. 修改一个jQuery对象实例的实例,一旦它被实例化
- 7. 一旦实例化了PHP中的类,会发生什么?
- 8. 计数实例化类的数量在调试模式
- 9. 设计模式 - 将Enum链接到类的实例
- 10. 用于创建子类对象实例的设计模式
- 11. 设计模式的例子
- 12. 设计模式:只有实例类,如果它不是已经实例化的对象的副本
- 13. 单例设计模式实现
- 14. 设计模式与实时示例
- 15. “关闭”一个类的实例的正确设计模式是什么?
- 16. C++:无法实例化的std ::设置一个模板类
- 17. 务实的设计模式
- 18. 只从一个地方进行类实例化的模式?
- 19. 标准库中单例设计模式实现的示例
- 20. C++不同类型的模板类的显式模板化函数实例化
- 21. 模块化设计模式
- 22. 在模块中实例化一个类
- 23. 如何实例化一个模板类
- 24. 如何设计一个可以仅由1个类实例化的单例
- 25. 设计模式的分类
- 26. 需要一些类似访问者的设计模式
- 27. C++模板类实例化
- 28. 类模板实例化
- 29. 选择要实例化的类c#
- 30. 我做了什么?需要实例化一个模板类
为什么不使构造函数为私有? – mmattax 2010-06-23 20:02:04
私人构造函数?不知道PHP支持他们。 NICE – leepowers 2010-06-23 21:04:29