PHP和单身人士再次

Max*_*rai 2 php singleton

class ConfigReader {private static $ instance = NULL; protected $ configData = array();

    public function getInstance()
    {
        if( self::$instance == NULL )
        {
            self::$instance == new ConfigReader();
        }
        return self::$instance;
    }

    public function getConfigValue( $getName )
    {
        echo 'In function';
    }

    private function __construct()
    {
        $this->configData = %READ_FROM_DATABASE%;
    }

    private function __clone() {}
}
Run Code Online (Sandbox Code Playgroud)

并为:

var_dump( ConfigReader::getInstance() )
Run Code Online (Sandbox Code Playgroud)

我得到了:NULL

我被大脑打破了......请帮帮我.

Xeo*_*eor 6

只是一个错字:self::$instance == new ConfigReader()包含==而不是=


rog*_*pvl 5

getInstance()方法也应该是静态的.


Pas*_*TIN 5

在getInstance方法中,你应该只使用一个'=':你想要进行赋值,而不是compatison:

self::$instance = new ConfigReader();
Run Code Online (Sandbox Code Playgroud)

代替

self::$instance == new ConfigReader();
Run Code Online (Sandbox Code Playgroud)


并且该方法应声明为static,因为您将其用作静态方法:

public static function getInstance()
{
    if( self::$instance == NULL )
    {
        self::$instance = new ConfigReader();
    }
    return self::$instance;
}
Run Code Online (Sandbox Code Playgroud)

Weth这两个修改,它应该工作;-)