是否可以在__constructor中使用单例方法来启动该类,如果它还没有?
答案 0 :(得分:3)
否 - 单例方法是使用构造函数的替代方法。
而不是说$session = new Session();
你应该说
$session = Session::getStaticSession();
然后将Session::getStaticSession()
定义为函数,返回内部静态var,如果内部静态var为null,则调用“new Session()”。
答案 1 :(得分:1)
如果在每个使用它的构造函数中创建它,那么它不是单例。
如果您遵循本教程,那么它应该可以帮助您了解如何在php中使用单例设计模式。
http://www.developertutorials.com/tutorials/php/php-singleton-design-pattern-050729/page1.html
答案 2 :(得分:1)
您不能在构造函数中使用单例方法,因为该对象已经创建,并且您无法返回任何内容。另一方面,您的单例方法需要返回当前对象或创建一个新对象。
但是,您可以使用单一方法执行此操作,例如:
<?php
class X {
// ...
function instance() {
static $instance;
if(!is_a($instance, 'X')) {
$instance = new X();
}
}
?>