2016-05-25 50 views
0

我的類文件就像下面如果我將參數傳遞給我的構造函數,我是否想每次創建對象實例時都傳遞參數?

<?php 
class person { 
var $name; 

function __construct($persons_name) { 
    $this->name = $persons_name;  
} 

function set_name($new_name) { 
    $this->name = $new_name; 
} 

function get_name() { 
    return $this->name; 
} 
} 

在我的結構我傳遞一個值。 一些別的地方的時候我要像下面

$hasee= new person(); 

$muja = new person("Mujahidh Haseem"); 

我想和嚴格傳遞價值創造人類的對象實例? 我收到這些通知的第一例。

Warning: Missing argument 1 for person::__construct(), called in D:\xampp\htdocs\oop\index.php on line 3 and defined in D:\xampp\htdocs\oop\class_lib.php on line 5

Notice: Undefined variable: persons_name in D:\xampp\htdocs\oop\class_lib.php on line 6

回答

2

您可以設置參數的默認值,這將被使用,當argumet是被遺漏的

function __construct($persons_name = null) { 
    if ($persons_name !== null)  
     $this->name = $persons_name;  
    else { 
     // your code when argumet is omited 
    } 
} 

$hasee= new person(); 
+0

'解析錯誤:語法錯誤,意外'=='(T_IS_EQUAL),期待')'' – ShiraNai7

+0

我怎樣才能使用__constructor? – Mujahidh

+0

在問題中。它將在兩種情況下都起作用。 – splash58

2

如果你想構造函數的參數可選,提供一個默認值。

function __construct($persons_name = null) { 
    $this->name = $persons_name; 
} 

查看PHP文檔Default argument values

如果您不想讓參數爲可選參數,則每次創建實例時都必須提供該參數,否則將會出現這些錯誤。

+2

只需選擇一項:)如何接受aswer:http://meta.stackexchange.com/a/23139 – ShiraNai7

相關問題