您将使用什么面向对象的设计模式来实现只能实例化一次的类(使用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. 设计模式实例
- 2. 全球Smarty实例的设计模式
- 3. 显式实例化C++类模板实例化相关基类?
- 4. 一旦实例化了PHP中的类,会发生什么?
- 5. 计数实例化类的数量在调试模式
- 6. 用于创建子类对象实例的设计模式
- 7. 设计模式:只有实例类,如果它不是已经实例化的对象的副本
- 8. 设计模式与实时示例
- 9. “关闭”一个类的实例的正确设计模式是什么?
- 10. 只从一个地方进行类实例化的模式?
- 11. C++不同类型的模板类的显式模板化函数实例化
- 12. 模块化设计模式
- 13. 在模块中实例化一个类
- 14. 如何设计一个可以仅由1个类实例化的单例
- 15. 设计模式的分类
- 16. 类模板实例化
- 17. 选择要实例化的类c#
- 18. 使用实体类设计模式
- 19. 在C++中的另一个类中的模板类实例化
- 20. 寻找一种设计模式,可以用不同的接口实现创建一个类的不同实例
- 21. 类的实例化
- 22. 我需要一个设计模式吗?
- 23. 主要.cpp文件之外的显式模板实例化
- 24. 模板类的模板化构造函数的显式实例化
- 25. 用参数列表显式实例化一个类模板
- 26. 需要Java模式:基于其他对象的类实例化对象
- 27. 如何模拟另一个类负责实例化的类?
- 28. 以编程方式选择要实例化的类
- 29. 需要iPhone网络连接的设计模式/示例链接
- 30. Singleton - 实例化类的最佳方式
为什么不使构造函数为私有? – mmattax 2010-06-23 20:02:04
私人构造函数?不知道PHP支持他们。 NICE – leepowers 2010-06-23 21:04:29