在PHP7發布以後,大家發現一個重要的改變是它增強了強型別檢查。這個變化是非常有益的,因為它可以幫助我們避免許多錯誤,例如在變數沒有被定義之前引用它。
在先前的PHP版本中,如果我們沒有定義一個變量,直接使用它會導致Undefined variable
的錯誤。但是,在PHP7中,我們可以使用一些新功能來避免這個問題的發生。
這些新功能包括兩個新的運算符,分別是:?->
和??
。它們可以分別解決兩種不同類型的問題。
?->運算子
在先前的PHP版本中,我們可以透過使用isset函數來判斷一個變數是否已定義。但是,這只適用於單一變數的情況。如果我們需要檢查一個物件的屬性是否已定義,那麼就需要使用一些複雜的程式碼來完成這個任務。
在PHP7中,我們可以使用?->運算子來檢查一個物件的屬性是否已定義。這個運算元只在屬性的接收者是null、false或未定義的變數時傳回null,否則傳回屬性的值。透過這種方法,我們可以避免在屬性沒有被定義之前使用它,從而避免Undefined variable的錯誤。
<?php $obj = null; $value = $obj?->property; ?>
在上面的程式碼中,如果$obj是null,那麼$value將被設定為null,否則$value將被設定為$obj的property屬性的值。
??運算子
另外一個非常有用的新功能是??運算子。這個操作符可以用來檢查一個變數是否已定義,如果沒有定義就設定一個預設值。
在先前的PHP版本中,我們通常會使用三元運算元來完成這個任務:
<?php $variable = isset($variable) ? $variable : 'default value'; ?>
在PHP7中,我們可以使用??運算子來取代上面的程式碼。如果$variable已經定義,那麼$variable將被賦值給$result,否則$result將被賦值為預設值。
<?php $variable = null; $result = $variable ?? "default value"; ?>
在上面的程式碼中,$result將被設定為"default value",因為$variable是null。
總結
這兩個新運算子可以非常有效地避免Undefined variable
的錯誤,並且使我們的程式碼更加清晰和易於維護。在使用它們時,我們只需要注意它們的用法和限制。
以上是php7新增的兩個運算子:“?->”和“??”的詳細內容。更多資訊請關注PHP中文網其他相關文章!