2016-03-21 15 views
3

Diziler veya birçok isteğe bağlı alan içeren nesneler üzerinde çalışıyorum.PHP @ dizi değerlerini kontrol etmek için güvenli midir?

$name = isset($revision['data']['name']) ? $revision['data']['name']: null; 

veya

$name = isset($revision->data->name) ? $revision->data->name: null; 
$name = isset($revision->data->name) ? $revision->data->name : 'default'; 

bu belirli bir durumda güvenli kullanımı mı (laravel birlikte): Ben bana yol PHP hata, almadan alan değerlerini kontrol çalışıyorum

$value = @ $revision['data']['name']; 
$value = @ $revision['data']['name'] ?: 'default'; 

Değilse, bu değerleri işlemenin daha iyi bir yolu ne olurdu?

Teşekkürler!

cevap

2

Raporlama hatalarını önleyeceği için güvenlidir, ancak iyi bir uygulama olduğunu söylemem. @ üzerinden isset göründüğünüzde daha açık olur, çünkü kod dizininin ayarlanmış olup olmadığını kontrol etmek için bana ön tarafını anlatıyor.

Başka bir alternatif, yardımcı işlevlerini çekmeyi düşünmüyorsanız, Laravel'in array_get modelini kullanmaktır. Bu durumda, sahip olduğunuz dizgiler için Laravel'in yardımcısı otomatik olarak sıfırlanırken $name = (array_get($revision, 'data.name')) ?: null; olacaktır. Ayrıca, varsayılan değeri array_get($array, 'foo.bar', 'default');

+0

el ile de ayarlayabilirsiniz Yardım işlevi harika görünüyor ve object_get() işlevini de kullanabilirim. Teşekkürler ! –

İlgili konular