2012-07-27 49 views
1

我只是學習OOP的新手。我已閱讀了很多文章,並嘗試了一些教程。我只是想知道爲什麼在構造函數中聲明參數時應該忽略一些值。OOP參數值等於null

function __construct($hostname = NULL, $username = NULL, $password = NULL, $database = NULL) 
    { 
     $this->hostname = !empty($hostname) ? $hostname : ""; 
     $this->username = !empty($username) ? $username : ""; 
     $this->password = !empty($password) ? $password : ""; 
     $this->database = !empty($database) ? $database : ""; 
    } 

這樣子。我真的很想知道。

+2

($ hostname = NULL,$ username = NULL,$ password = NULL,$ database = NULL)當創建類的對象並且不提供參數時,它用於將值傳遞給變量時間將分配空值並創建對象 – Jalpesh 2012-07-27 05:49:59

回答

2

將參數保留爲NULL將使該函數運行,即使在函數調用期間不傳遞所有參數。

例如,如果一個函數需要3個參數並且只提供了2個參數,並且在函數定義中第三個參數沒有指定爲NULL,則該函數將引發錯誤。

+0

是有意義的。謝謝。 10分鐘後我會接受這個。無法接受這一次。 – 2012-07-27 05:51:07

+0

不客氣,不用擔心。 – asprin 2012-07-27 05:51:47

2

我只是想知道爲什麼在構造函數上聲明一些參數 值應該是零。

這些是不是需要被禁止。

它們作爲default value for the parameter被禁止。

  1. 不帶任何參數
  2. 隨着$主機名
  3. 隨着$主機,$用戶名
  4. 用:例如在例如通過你提供的功能,可以在五個方法之一被稱爲$主機名,用戶名$,$密碼
  5. 隨着$主機名,用戶名$,$密碼,$數據庫

一個需要小心,這不是可以調用的樂趣使用$ hostname,$ password設置,並讓該函數使用$ username的默認值。

+0

啊,我明白了。我說這個不好。因爲我看到了那些文章。不是因爲這是必需的,而是爲了好的實踐,我想。 – 2012-07-27 05:54:10

1

這是一個具有默認值的構造函數,如果參數未傳遞給_construct方法,它將爲變量分配NULL值。所以這意味着它不需要傳遞參數給這個構造函數。

1

這個語法是爲了方便您啓動類不傳遞任何參數

function __construct($hostname = NULL, $username = NULL, $password = NULL, $database = NULL) 

此簽名會告訴你可以選擇通過參數假設你Class A{}有這種構造您可以根據需要啓動它在以下幾個方面

$t = new A(); 
$t1 = new A('locathost','user1','pw1', $db_connection); 
$t2 = new A('localhost'); 

這些所有的初始化都是有效的。