Salah sawijining kekuwatan Laravel yaiku sintaks sing elegan. Yen sampeyan duwe akeh model lan hubungan ing Laravel (amarga akeh tabel ing database), traversing asring bisa mungkasi kode kurang elegan. Sajrone wektu, telung ekstensi cilik wis kabukten sukses kanggo aku, sing dakkarepake ing ngisor iki. Kanggo nindakake iki, kita mung nggunakake sawetara warisan, cara gaib lan koleksi adat.
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 uga bisa ditindakake ing conto ing ndhuwur:
b45e29b9125c2ab565b5526442437686
Priksa obyek kosong
Yen sampeyan pengin output jeneng negara kanggo alamat pribadi, sampeyan kerep ndeleng kode ing ngisor iki:
b45e29b9125c2ab565b5526442437686
Kanggo nyegah iki, kita kalebu perpustakaan stringhelper lan bali obyek khusus saka kelas kosong kosong yen model ora ketemu:
b45e29b9125c2ab565b5526442437686
Iki tegese telpon kasebut sukses (ing conto iki, yen ana sing ditemokake, jeneng negara kasebut metu, ing kabeh kasus liyane 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
Kita banjur nggawe file app\Helpers\ConvenienceCollection.php , sing mesthekake yen nelpon fungsi sing ora dingerteni kanggo koleksi nglakokake 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
Panggilan ing ngisor iki mung diurutake miturut lokasi , sanajan iki ora 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