Lazy Models Getters (using __get())
Benim apps çok sık PHP'nin sihirli yöntemler kullanılarak hatırlamıyorum, ama ben __get()
, çok yararlı oldu bir durum hatırlıyorum.
Geri Ben modeller çok ve belirli kontrol ünitesinde kullanılan tüm modelleri vardı CakePHP çerçevesinde bir uygulama geliştirme edildi günlerde yöntem sadece (o Kek çalışıyordu nasıl) bir veya ikisinin faydalanmak bile başlatılmıştır. (Onlar ilk kez kullanıldığında yükleme modellerde) Yani tembel tembel modelleri olduğunu değiştirmeye karar verdi.
Ben yaptım ben bütün özel adı olan bir model için baktım ve yüklenen çok basit bir __get()
fonksiyonu eklenir. Bu kod 3-4 çizgileri gibiydi. Ben (her CakePHP sınıflar bu kontrolör türemiştir) AppController bu tanımlanan ve aniden benim app hız kazanmış ve daha düşük bellek kullandı.
Ben daha sonra daha aldı ve aynı zamanda aynı şekilde tembel bileşenleri yükleme yaptı.
Dynamic Model Methods (using __call())
Başka bir örnek, aynı zamanda CakePHP gelen modellerde nasıl Kek arama olduğunu. Temelde bunun için iki yöntem var: find()
ve findAll()
her model, ama aynı zamanda findBy<FieldName>()
ve findAllBy<FieldName>()
yöntemlerini kullanarak arama yapabilirsiniz.
Örnekte tablo db varsa
notes(id, date, title, body)
Ve bunun için Pasta modeli oluşturmak. Öyle böyle findById()
, findByTitle()
gibi yöntemleri kullanabilirsiniz. Sadece CamelCase db alanı ihtiyacı ve çok daha hızlı herhangi bir alanda bir arama yapabilirsiniz.
Kek __call()
sihirli yöntemini kullanarak bunu yapar. Eğer varsa ve sadece dinamik yöntemi adı ve parametreleri oluşturulan koşullar ile find()
veya findAll()
çalışır olmayan bir yöntemi uygulamak için çalışıyoruz, bu yöntemi denir. Bu uygulama çok basit ve gerçekten pek çok yarar verebilir.