2013-05-16 93 views
1

我想知道爲什麼在下面的PHP代碼中,PDO對象$ db是作爲NULL傳遞的。即構造器參數中的$db=NULL

class ColoredListsUsers 
{ 
    /** 
    * The database object 
    * @var object 
    */ 
    private $_db; 

    /** 
    * Checks for a database object and creates one if none is found 
    * @param object $db 
    * @return void 
    */ 
    public function __construct($db=NULL) /* why is #db passed as null here ? */ 
    { 
     if(is_object($db)) 
     { 
      $this->_db = $db; 
     } 
     else 
     { 
      $dsn = "mysql:host=".DB_HOST.";dbname=".DB_NAME; 
      $this->_db = new PDO($dsn, DB_USER, DB_PASS); 
     } 
    } 
} 

早些時候$ DB被宣佈爲一個PDO對象:

// Create a database object 
    try { 
     $dsn = "mysql:host=".DB_HOST.";dbname=".DB_NAME; 
     $db = new PDO($dsn, DB_USER, DB_PASS); 
    } catch (PDOException $e) { 
     echo 'Connection failed: ' . $e->getMessage(); 
     exit; 
    } 

似乎沒有什麼意義,使$ dB的PDO對象,然後把它作爲空.... 代碼來自http://www.copterlabs.com/blog/creating-an-app-from-scratch-part-5/

+0

您沒有在提供的代碼中創建任何'ColoredListsUsers'實例。 – zerkms

+0

它不作爲NULL傳遞 - 這是構造函數的默認參數值。它允許一個_omit_ $ db參數,在這種情況下它將是默認的NULL。 –

回答

3

public function __construct($db=NULL)表示$dbis an optional parameter。如果未指定,則將使用默認的NULL值。

在這種情況下 - 查看下面幾行,else正文 - 默認連接已創建。

+0

哦,所以$ db總是被傳入函數;只是它有一個值,PDO,它保留它並且if()執行,因爲它計算爲一個對象,但是如果$ db沒有被賦值,那麼它的值是NULL,else()會執行嗎?我在想這個權利嗎? – LazerSharks

+0

@Gnuey:「但是如果$ db沒有被賦值」---這是不正確的。正確的是:「但如果沒有通過」。像'new ColoredListsUsers();' – zerkms

+0

啊,好的。這是我正在考慮的另一種解釋。說得通。謝謝。 – LazerSharks

相關問題