PHP yöntem faydaları zincirleme?

3 Cevap php

Hala PHP-OOP eğitim Seyyar, bu soru failblog.org üzerine ait olabilir. =)

PHP yöntemi zincirleme faydaları nelerdir?

Ben bu önemli olup olmadığından emin değilim, ama ben statik benim yöntemini çağırarak olacak. örneğin

$foo = Bar::get('sysop')->set('admin')->render();

Okuduğum kadarıyla, döndüren herhangi bir yöntem $this zincirleme izin verilir. Ben sadece bu PHP5 yeni öğrendim. Ben (statik çağırarak) yepyeni bir nesne örneğini oluşturmak için var ve sadece ben sınıfından ihtiyaç birkaç yöntem seçmezseniz hız yararları olabileceği gibi geliyor bana?

Ben hakkım var mı?

3 Cevap

Yaklaşım kullanılarak hiçbir önemli performans avantajları özellikle byte kod önbellek ile bir üretim sunucusuna vardır.

Yöntem zincirleme yazma şeyler sadece kısa bir yoludur. Uzun versiyonu ile karşılaştırın:

$foo = Bar::get('sysop');
$foo -> set('admin');
$foo -> render();

Gerçi, bazı tuhaflıklar var: (Eclipse gibi) tipik bir IDE uzun versiyonu kodunuzu otomatik olarak tamamlamak (as uzun türü olarak $foo bilinir) ama dönüşünü belgelemek için sana ihtiyacı var kısa sürümünde çalışmak için tüm yöntemler türü.

Hala bir nesne oluşturur; Bu sadece bir değişkene atanan asla. Temel olarak, sadece bir anonim nesnenin yöntemlerini arıyorlar.

Ben, herhangi bir çevrim-tasarruf önemsiz olacağını düşünüyorum, ama ben atanmamış nesneleri hemen bu kod satırından sonra serbest olacağını düşünüyorum, bu yüzden size ({atanan nesneleri belirleyerek aynı başarabileceği [(0)] bazı bellek tasarruf olabilir } Sen) Onlarla bitince.

Insanlar yöntem zincirleme kullanmak temel nedeni kolaylık sağlamak içindir; Eğer bir satır kod bir çok yapıyoruz. Şahsen, dağınık ve unmaintainable düşünüyorum.

if I don't have to instantiate a whole new object (calling it statically) and just select the few methods I need from the class?

Yanlış! Dönmek için $ bu sınıf örneği vardır.