Salah sawijining kekuwatan Laravel yaiku sintaksis sing elegan. Yen sampeyan duwe akeh model lan hubungan ing Laravel (amarga akeh tabel ing basis data), traversing asring bisa diakhiri karo kode sing kurang elegan. Sajrone wektu, telung ekstensi cilik wis kabukten dhewe kanggo aku, sing pengin dakenalake kanthi ringkes ing ngisor iki. Kita mung nggunakake sawetara warisan, cara sihir lan koleksi khusus.
Pisanan, kita nggawe model anyar ing aplikasi \ ConvenienceModel.php:
b45e29b9125c2ab565b5526442437686
Banjur kita ngidini kabeh model dadi warisan saka ConvenienceModel sing anyar:
b45e29b9125c2ab565b5526442437686
Campur fungsi sampeyan dhewe karo sesambetan
Yen sampeyan pengin entuk model sing gegandhengan, sampeyan nggunakake sintaks standar kanggo nelpon:
b45e29b9125c2ab565b5526442437686
Yen saiki nambah logika bisnis dhewe, sampeyan seneng nggunakake notasi kasus unta (ngisor):
b45e29b9125c2ab565b5526442437686
Kita pengin standarisasi sintaks kaloro jinis kasebut. Kanggo nindakake iki, kita nambah __call metode sulap menyang ConvenienceModel:
b45e29b9125c2ab565b5526442437686
Telpon iki bisa uga digawe ing conto ing ndhuwur:
b45e29b9125c2ab565b5526442437686
Priksa obyek kosong
Yen sampeyan pengin ngasilake jeneng negara kasebut menyang alamat pribadi, sampeyan bakal asring ndeleng kode ing ngisor iki:
b45e29b9125c2ab565b5526442437686
Kanggo nyegah, kita nyakup perpustakaan stringhelper lan ngasilake obyek khusus kelas kosong kosong yen ora ditemokake model:
b45e29b9125c2ab565b5526442437686
Iki uga nggawe telpon sukses (ing conto iki, yen ana sing ditemokake, jeneng negara kasebut output, ing kabeh kasus string kosong).
b45e29b9125c2ab565b5526442437686
Yen kita uga pengin nutupi kasus manawa pangguna kanthi ID 42 bisa uga ora ana, kita uga bakal nggawe fungsi helper cilik kanggo iki:
b45e29b9125c2ab565b5526442437686
Telpon ing ngisor iki menehi string kosong sanajan pangguna ora ana:
b45e29b9125c2ab565b5526442437686
Trep ngliwati hubungan n: m
Pungkasan, kita pengin nyederhanakake kode ing ngisor iki:
b45e29b9125c2ab565b5526442437686
Kanggo iki, kita nggunakake kemungkinan koleksi khusus . Kita pisanan ngembangake model kenyamanan:
b45e29b9125c2ab565b5526442437686
Banjur kita nggawe aplikasi file \ Helpers \ ConvenienceCollection.php , sing njamin manawa nelpon fungsi sing ora dingerteni ing koleksi nindakake fungsi kanggo kabeh item ing koleksi:
b45e29b9125c2ab565b5526442437686
Dadi, kita bisa nggunakake kode ing ngisor iki kanggo ngasilake kabeh jeneng kabeh negara kabeh alamat kabeh wong tuwa saka wong kasebut:
b45e29b9125c2ab565b5526442437686
Nanging telpon kaya ing ngisor iki uga bisa ditindakake:
b45e29b9125c2ab565b5526442437686
Urut nganggo macem-macem kolom
Telpon ing ngisor iki mung miturut lokasi , sanajan bisa uga ora kaya sing dikarepake:
b45e29b9125c2ab565b5526442437686
Kanggo ngaktifake ngurutake miturut sawetara kolom, kita nggedhekake ConvenienceCollection:
b45e29b9125c2ab565b5526442437686
Kanthi mangkono kita bisa ngurutake koleksi miturut sawetara kolom kanthi:
b45e29b9125c2ab565b5526442437686
Ngurutake standar
Kita ngembangake ConvenienceCollection kanthi fungsi tambahan liyane:
b45e29b9125c2ab565b5526442437686
Saiki sampeyan bisa menehi saben fungsi fungsi ngurutake standar kanggo saben model:
b45e29b9125c2ab565b5526442437686
Kanthi iki, kita bisa ngurutake koleksi kanthi:
b45e29b9125c2ab565b5526442437686
Jeneng obyek
Saben model ngetrapake cara getLabel (getName beda-beda gumantung karo model):
b45e29b9125c2ab565b5526442437686
Kanthi iki, sampeyan bisa kanthi cepet lan cepet ngetrapake jeneng obyek. Sampeyan banjur bisa ngetrapake cara pambantu sortByLabel ing ConvenienceCollection:
b45e29b9125c2ab565b5526442437686
Asil kosong
Yen langkah penengah kosong, fungsi Laravel luwih dhisik () lan pungkasan () biasane ngasilake nol. Mula kita ngenalake getFirst () lan getLast () saengga panggilan ing ngisor iki mesthi sukses:
b45e29b9125c2ab565b5526442437686
Kanthi iki, kita ngirim __empty_helper bali, sing __x diakoni:
b45e29b9125c2ab565b5526442437686