2017-09-10 41 views
0

在下面的代碼:指定該參數是在構造一個數據庫

protected $db; 

    public function __construct(Database $db) 
    { 
     $this->db = $db; 
    } 

什麼是指定參數$ DB是,如果你可以命名爲任何你想要一個數據庫的點,它仍然會工作?

+0

變量/屬性的命名與其類型無關。例如,如果您傳入類型爲「Date」的對象,會發生什麼情況?將會拋出方法/屬性不存在的錯誤。 – BenM

+0

不,我的意思是變量名前的'Database'關鍵字。我如何搜索這個約定,以便了解更多信息? – user3628807

+0

是的,我知道你的意思。這指定了什麼*類型*變量'$ db'應該是。你知道PHP中的變量可以有不同的類型,對吧? – BenM

回答

2

這是一個類型聲明。從manual

類型聲明允許功能要求的參數是 某種類型的通話時間。如果給定的值是不正確的 類型,則會生成一個錯誤:在PHP 5中,這將是一個可恢復的 致命錯誤,而PHP 7將拋出異常的 TypeError

要指定類型聲明,應該在參數名稱之前添加類型名稱 。如果參數的默認值設置爲NULL,則聲明可以接受NULL 值。

所以,如果我們沒有在你的代碼指定$db類型聲明,我們可以實例化類與null的說法,這將導致該對象的$db參數設置爲null

$object = new ClassName(null); 

通過指定爲構造單個參數必須Database類型的,PHP將拋出(在PHP 7或異常)一個錯誤,如果我們通過它的任何其他比Database對象。例如:

$object = new ClassName(null); // Throws an error/exception 

$db  = new Database(); 
$object = new ClassName($db); // Performs as expected. 

在此特定情況下,Database是你與(即class Database { ... })工作的框架/庫中定義的對象類型。

+0

我現在看到了。感謝你的例子,他們真的幫助我! – user3628807

相關問題