簡體   English   中英

PHP三元運算符對象分配

[英]PHP ternary operator object assignment

我有一個對象:

$info = [
    'last_name' => $this->askForLastName(),
];

我正在嘗試讀取env('ADMIN_LAST_NAME',null)形式的環境變量,並嘗試使用三元運算符,以便僅在env變量不存在時才應調用該函數。

例如:

$info = [
    'last_name' => env('ADMIN_LAST_NAME', null)? env('ADMIN_LAST_NAME', null) : $this->askForLastName(),
];

這是正確的方法嗎?

使用三元運算符快捷方式可能會更好。

從PHP 5.3開始,可以省略三元運算符的中間部分。 如果expr1的計算結果為TRUE,則表達式expr1?:expr3返回expr1,否則返回expr3。

這樣, env()函數將僅被調用一次(而不是兩次):

$info = [
    'last_name' => env('ADMIN_LAST_NAME', null) ?: $this->askForLastName(),
];

除非''nullfalse是有效的管理員姓氏,否則它將正常工作。

該代碼應該可以工作,但是可以對其進行改進。

首先,由於true子句沒有其他情況,因此可以使用簡寫三元運算符。

['last_name' => env('ADMIN_LAST_NAME', NULL) ?: $this->askForLastName()'] ;

此外,盡管對於if子句,空值將返回false,但它不是非常准確或特定。 如果要顯式檢查空值,請使用is_null 如果要為null或false,請使用empty 在這種情況下,您將無法使用速記,因為true / false子句都必須返回一個單獨的實體。

['last_name' => is_null(env('ADMIN_LAST_NAME', NULL)) ? $this->askForLastName() : env('ADMIN_LAST_NAME', NULL)]

您可以擺脫對env的多次調用,從而進一步向前邁進。

['last_name' => is_null(($adminLastName = env('ADMIN_LAST_NAME', NULL))) ? $this->askForLastName() : $adminLastName] ['last_name' => is_null(($adminLastName = env('ADMIN_LAST_NAME', NULL))) ? $this->askForLastName() : $adminLastName]

這是代碼風格和首選項的問題。 只要在整個代碼庫中保持一致即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM