it-swarm-id.com

Praktik terbaik untuk membangun modul menggunakan kelas

Saya ingin mulai membangun modul saya sebagai kelas sekarang karena malas/auto-load berada di Drupal 7, dan saya ingin melihat beberapa modul (contrib atau core) yang sedang melakukan pekerjaan yang bagus.

Apakah ada cara kreatif untuk mengintegrasikan kelas sebagai pengait? Apakah saya menerapkan setiap fitur sebagai plugin ctools?

Setiap pelintas harus mencatat bahwa D7 memiliki deklarasi files[] Baru dalam modul .info File untuk kelas/antarmuka auto/lazy-loading: Menulis file .info (Drupal 7.x) .

Berikut ini adalah bacaan yang baik untuk mendapatkan motivasi dan konstitusi (seolah-olah) dari komunitas Drupal pemrograman Drupal dari perspektif berorientasi objek .

19
electblake

Modul bukan kelas oleh Crell adalah apa yang harus Anda baca terlebih dahulu.

Bagian terbesar OOP dalam Drupal 7 adalah lapisan abstraksi basis data baru (dirancang oleh Crell yang sama dan yang lainnya). Itu mengimplementasikan banyak pola yang dapat dan harus digunakan kembali.

Sebagai contoh:

Sesuatu yang masih dibahas kontroversi adalah Informasi disembunyikan . DBTNG mengimplementasikannya dengan membuat properti kelas terlindungi dan tidak diizinkan akses langsung. Di sisi lain, kita memiliki hook_query_alter () dan mereka dapat diubah hampir secara bebas dengan berbagai dengan pengambil referensi metode.

16
Berdir

Ini pertanyaan yang menarik.

Gagasan tentang sebuah modul Drupal sebagai sebuah kelas sangat menarik. Namun bahkan dalam modul D7 cukup mengimplementasikan fungsi-fungsi pengait yang diperiksa berdasarkan namanya, jadi meskipun Anda membuat kelas untuk modul Anda, Anda akan masih perlu mengimplementasikan fungsi hook untuk menjalankannya.

Namun banyak modul menggunakan kelas secara internal, dan mengekspos fungsionalitas melalui kelas-kelas ini. Contoh yang paling jelas adalah pandangan. Jadi itu mungkin tempat yang bagus untuk mencari. Namun perlu diketahui bahwa banyak modul menggunakan kelas dengan caranya sendiri, sehingga apa yang Anda pelajari dari melihat tampilan mungkin tidak selalu berlaku.

3
Jeremy French

Entity API (modul contrib) memungkinkan Anda untuk mendeklarasikan "kelas entitas" untuk setiap jenis entitas Anda, sehingga semua kode yang terkait dengan entitas Anda (buat, muat, simpan, akses, dll.) Dapat masuk dalam kelas (lihat bagaimana Organik Grup melakukannya, misalnya).

Karena itu, jangan berlebihan. Plugin ctools adalah hal yang baik ketika Anda membutuhkannya (Anda sedang menulis Tampilan, Panel, atau Aturan selanjutnya), tetapi menggunakan kelas di mana-mana hanya untuk kemurnian ideologis tidak akan banyak membantu Anda.

2
Bojan Zivanovic