PHP中的构造方法内部的单例?

时间:2009-09-23 01:40:43

标签: php singleton

是否可以在__constructor中使用单例方法来启动该类,如果它还没有?

3 个答案:

答案 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();
        }
    }
?>