Laravel İsteğe Bağlı Yardımcı ve Yeni Opsiyonel Kapanışı Kullanma

Laravel Optional sınıfı ve beraberindeki isteğe bağlı yardımcılar Laravel 5.5'te tanıtıldı. Bu sınıf, bu sinir bozucu önlemek için yararlıdır Kodunuzda Trying to get property of non-object hataların Trying to get property of non-object .

Joseph Sibler, Laravel 5.6.13'te ele aldığımız Laravel opsiyonel yardımcısına bir gelişme sunmuştur. Bu, şimdi sadece nesne null olmadığında çağrılan bir kapanmaya izin vermektedir:

???? @laravelphp'deki "isteğe bağlı" yardımcı, null olabilecek bir nesneye güvenli bir şekilde çağrı yapmak için mükemmeldir. Ama yöntem gerçek nesnenin kendisinde değilse ne olur?

Peki şimdi "isteğe bağlı" bir kapatma geçebilir ve sadece belirtilen nesne boş değilse, sadece arayacaksınız ???? pic.twitter.com/0RIbUffuOY

– Joseph Silber (@joseph_silber) 5 Nisan 2018

Onun örneği, optional() yardımcı aracının kullanımının, başka bir kaynaktan veri almak istediğiniz durumlarda, ancak yalnızca boş olmayan bir değerde kullanım durumları için biraz farklı olduğunu gösterir:

return optional(User::find($id), function ($user) {
return TwitterApi::findUser($user->twitter_id);
});

İsteğe bağlı ve Null Coalesce

Son zamanlarda, Blade şablonlarınızı Laravel 5.7 için hazırlanırken PHP7 boş birleştirme işleci için güncellemeyi yazdık, ancak optional() hala, özellikle değeri yalnızca değerinizdeyken istediğiniz verilere erişebileceğiniz daha gelişmiş ihtiyaçlar için bir yer var. Null.

Peki, optional() veya boş birleştirme işlecine ne zaman ihtiyaç duyarsınız?

Bir değer mevcut değilken yalnızca null döndürme ile ilgileniyorsanız, isteğe bağlı olarak gereksiz değildir:

// null coalesce
return $user->profile->twitter_id ?? null;

// optional
return optional($user->profile)->twitter_id;

İki kod örneği aynı şeyi gerçekleştirir. Ancak, açık bir şekilde boş değer döndürmeli ve tanımlanmamış bir Undefined property uyarısından kaçınmak için boş birleştirme kullanılmalı ve ikinci örnek, değerin isteğe bağlı olarak kullanılabilir olduğuna dair niyetini gösterir.

Varsayılan bir değer istiyorsanız, boş birleştirme daha iyi bir seçimdir:

return $user->profile->nickname ?? randomNickname();

Seçeneğin hedefi, nesneyi kontrol etmek için ayrıntılı bir kod olmadan, null döndürmek ve işlemdeki nesne olmayan hatalardan kaçınmaktır.

Daha fazla bilgi edin

İsteğe bağlı yardımcısını ve yardımcı olabilecek diğer yararlı yardımcıları içeren, Hayatınızı Kolaylaştıracak Beş Laravel Yardımcıyı yazdık.

İsteğe bağlı konsept ile ilgili diğer kaynaklardan ilham almak isterseniz, Java'da (Java 8'de tanıtılan) bir Seçmeli sınıf bulunur ve bunlar null işaretçi istisnalarından kaçınmak için kullanılabilir. Java İsteğe Bağlı API'sı, keşfetmek isteyebileceğiniz bazı ilginç yöntemlere sahiptir.

Bir önceki yazımız olan Ubuntu'da Transporter ile MongoDB'den Elasticsearch'e Dönüştürülen Verileri Eşitleme 16.04 başlıklı makalemizi de okumanızı öneririz.

About This Author

Comments are closed

%d blogcu bunu beğendi: