[英]Type hinting in PHP constructors?
有什么可以阻止我在__construct()
括號內進行類似類型的提示嗎?
<?php
class SomeClass extends BaseClass {
public function __construct(array $someArray) {
parent::__construct($someArray);
}
還是我只能這樣做?
<?php
class SomeClass extends BaseClass {
public function __construct($someArray = array()) {
parent::__construct($someArray);
}
編輯:
這是有效的方法:(感謝@hakra和@Leigh)
<?php
class SomeClass extends BaseClass {
public function __construct( array $someArray = NULL ) {
parent::__construct( (array) $someArray);
}
對我來說,它看起來不錯,干凈,我確切知道它的意思。
這是沒有默認值的類型提示,指出必須給定參數,並且它的類型必須是數組
public function __construct(array $someArray) {
如果沒有傳遞任何參數,則沒有類型提示,這將為參數提供默認值。
public function __construct($someArray = array()) {
他們是兩個不同的東西。
在第二種情況下,您可以不帶任何參數調用該函數,它將起作用,但是第一種情況則不會。
如果需要,可以將兩者結合起來以指定默認值並指定所需的類型。
public function __construct(array $someArray = array()) {
或者如@hakre所述,您可以執行以下操作:
public function __construct(array $someArray = NULL) {
您可以這樣做:
public function __construct(array $someArray = NULL)
{
$someArray = (array) $someArray;
parent::__construct($someArray);
...
這里的情況是利用規則的= NULL
例外。 下一行:
$someArray = (array) $someArray;
只是將NULL
轉換為空數組,否則將數組原樣保留為數組的一種簡寫形式(所謂的將Docs轉換為array ):
將
NULL
轉換為數組會導致一個空數組。
(來自: 轉換為數組Docs )
當然,您可以將它寫得更短:
public function __construct(array $someArray = NULL)
{
parent::__construct((array) $someArray);
}
但這並不能很好地解釋它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.