我在許多地方(數以千計的地方)在我的項目下面的代碼:PHP的:寫一個返回值或空isset功能
$foo = isset($mixed) ? $mixed : null;
哪裏$mixed
可以是任何東西:數組,數組元素,對象,對象屬性,標量等。例如:
$foo = isset($array['element']) ? $array['element'] : null;
$foo = isset($nestedArray['element']['key']) ? $nestedArray['element']['key'] : null;
$foo = isset($object->prop) ? $object->prop : null;
$foo = isset($object->chain->of->props) ? $object->chain->of->props : null;
有沒有辦法將這個重複的邏輯寫成一個(簡單)函數?例如,我試過:
function myIsset($mixed)
{
return isset($mixed) ? $mixed : null;
}
上面的函數看起來好像會起作用,但實際上並沒有。例如,如果$object->prop
不存在,並且我打電話給myIsset($object->prop))
,那麼在函數被調用之前,我會收到致命錯誤:Undefined property: Object::$prop
。
關於如何編寫這樣一個函數的任何想法?它甚至有可能嗎?
我意識到一些解決方案已發佈here和here,但這些解決方案僅適用於陣列。
我不認爲你可以更有效地做到這一點。相反,我會盡量減少你使用它的次數,*千*似乎太多了。我猜想整個變量塊都是設置或不設置的,因此檢查一個變量可以給你設置各種變量的機會。 – jeroen
@jeroen如果你經常需要經常檢查這個問題,那麼這是一種「代碼味道」 –