PHP代码中的单例语法

PHP代码中的单例语法,php,syntax,singleton,Php,Syntax,Singleton,我理解singleton模式,但不理解以下语法: public static function get() { static $db = null; if ( $db == null ) $db = new DatabaseConnection(); return $db; } private function __construct() { $dsn = 'mysql://root:pass

我理解singleton模式,但不理解以下语法:

    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

在课堂上试试这个:

private static $db;

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

         self::$db = new DatabaseConnection();

     }

    return self::$db;
}

在我看来,你是正确的,这不会遵循单例模式-相当混乱。。。我想看看有没有人不同意。对于
$array\u object[]=$added\u item
,它只是将
$added\u item
添加到
$array\u object
array;)的下一个可用索引中虽然如果你对在哪里可以找到类似的东西感兴趣,我通常也会检查一下,如果你把
static$db=null
get()
方法之外,我认为这可以正常工作,因为它只设置了一次null。也许这就是你的意思?是的,我认为这应该适用于单身汉,只是想知道例子中显示的情况。