0

我了解单例模式,但我不了解以下语法:

    public static function get()
    {
      static $db = null;
      if ( $db == null )
        $db = new DatabaseConnection();
      return $db;
    }
    private function __construct()
    {
      $dsn = 'mysql://root:password@localhost/photos';
      $this->_handle =& DB::Connect( $dsn, array() );
    }

为什么每次调用 DatabaseConnection::get() 都可以得到同一个单例对象?因为从我这里读到的代码会喜欢:

    static $db = null; //set $db object to be null
    if($db==null)  // $db is null at the moment every time because we just set it to be null
      // call the private constructor every time we call get() *
      $db = new DatabaseConnection();  
    return $db;  // return the created 

那么 get() 函数如何总是返回相同的对象呢?

我是 Php 的新手,对我来说大部分语法都会读起来像 java,请任何人都可以向我解释一下吗?

还有我可以阅读的任何说明/教程以了解更多语法糖,例如:

       $array_object[] = $added_item
4

1 回答 1

1

在你的课堂上试试这个:

private static $db;

public static function get(){
    if(!self::$db){

         self::$db = new DatabaseConnection();

     }

    return self::$db;
}
于 2013-07-19T01:34:05.220 回答