Saya menggunakan PHP 5 dan saya pernah mendengar tentang fitur baru dalam pendekatan berorientasi objek, yang disebut 'metode chaining'. Apa itu sebenarnya? Bagaimana cara menerapkannya?
php
oop
method-chaining
Sanjay Khatri
sumber
sumber
Jawaban:
Agaknya sederhana, Anda memiliki serangkaian metode mutator yang semuanya mengembalikan objek asli (atau lainnya), dengan begitu Anda dapat terus memanggil metode pada objek yang dikembalikan.
Ini menghasilkan "ab"
Cobalah online!
sumber
$foo->setBar(1)->setBaz(2)
vs$table->select()->from('foo')->where('bar = 1')->order('ASC)
. Yang terakhir ini mencakup beberapa objek.$a = (new fakeString())->addA()->addB()->getStr();
Pada dasarnya, Anda mengambil objek:
Panggil metode yang secara efektif melakukan a
return $this;
di akhir:Karena mengembalikan objek yang sama, atau lebih tepatnya, referensi ke objek yang sama, Anda dapat melanjutkan memanggil metode dari kelas yang sama dari nilai pengembalian, seperti:
Itu dia, sungguh. Dua hal penting:
Seperti yang Anda perhatikan, ini hanya PHP 5. Ini tidak akan berfungsi dengan baik di PHP 4 karena mengembalikan objek dengan nilai dan itu berarti Anda memanggil metode pada salinan objek yang berbeda, yang akan merusak kode Anda.
Sekali lagi, Anda perlu mengembalikan objek dalam metode yang dapat dilewati:
sumber
return &$this
di PHP4?Coba kode ini:
sumber
Chaining metode berarti Anda dapat membuat panggilan metode panggilan:
Ini berarti bahwa method1 () perlu mengembalikan objek, dan method2 () diberikan hasil dari method1 (). Method2 () kemudian meneruskan nilai kembali ke method3 ().
Artikel bagus: http://www.talkphp.com/advanced-php-programming/1163-php5-method-chaining.html
sumber
Cara lain untuk chaining metode statis:
Panggilan
sumber
Ada 49 baris kode yang memungkinkan Anda untuk menghubungkan metode pada array seperti ini:
Lihat artikel ini yang menunjukkan kepada Anda bagaimana cara menghubungkan semua fungsi tujuh puluh array_ PHP.
http://domexception.blogspot.fi/2013/08/php-magic-methods-and-arrayobject.html
sumber
Jika Anda maksud metode chaining seperti dalam JavaScript (atau beberapa orang mengingat jQuery), mengapa tidak mengambil perpustakaan yang membawa dev itu. pengalaman dalam PHP? Misalnya Ekstra - https://dsheiko.github.io/extras/ Yang ini memperluas jenis PHP dengan metode JavaScript dan Garis Bawah dan menyediakan rangkaian:
Anda dapat rantai jenis tertentu:
atau
Atau Anda bisa menggunakan polimorfik:
sumber
Di bawah ini adalah model saya yang dapat ditemukan oleh ID dalam database. Metode with ($ data) adalah parameter tambahan saya untuk hubungan jadi saya mengembalikan $ this yang merupakan objek itu sendiri. Pada pengontrol saya, saya dapat mengaitkannya.
sumber