2017-06-12 58 views
0

我發現在使用數組$選擇與互聯網的PHP類= []在方法參數:

class TADFactory 
{ 
    private $options; 


    public function __construct(array $options = []) 
    { 
     $this->options = $options; 
    } 

//some other methods here 
} 

和page.php文件文件

$tad_factory = new TADFactory(['ip'=>'192.168.0.1']); 
//some other stuffs here 

但是在瀏覽器中執行的文件page.php文件之後,它被示出:

Unexpected `[` in page.php file at line 1, expecting `)`.... 

但根據PHP庫實況通過這種方式,我必須在參數中使用多維數組。

我無法理解TADFactory類參數中的array $options = []是什麼意思,爲什麼錯誤是拋出?

+3

您運行的是哪個版本的PHP? – aynber

+2

'array'是一個強制傳遞數組的類型提示,如果沒有任何東西被傳遞(默認),'= []'將'$ options'設置爲一個空數組。 – AbraCadaver

+0

這個簡短的數組語法是在PHP 5.4中引入的。如果您運行的是舊版本,則需要將其更改爲使用'array $ options = array()'和'$ tad_factory = new TADFactory(array('ip'=>'192.168.0.1')); '。 – rickdenhaan

回答

0

這是一個default argument value。這是你如何聲明一個參數是可選的,如果沒有提供,它應該默認具有什麼值。

function add($x, $y = 5) { 
    return $x + $y; 
} 

echo add(5, 10); // 15 
echo add(7); // 12 

至於陣列註釋,這是一個type hint(也稱爲類型聲明),這意味着必須傳遞函數數組或它會引發錯誤。類型提示在動態語言中相當複雜且有爭議,但它可能值得了解。

function sum(array $nums) { 
    return array_sum($nums); 
} 

echo sum([1, 2, 3]); // 6 
echo sum(5); // throws an error 

注意:如果默認參數值爲空,則只能將類型提示與缺省參數值組合使用。

相關問題