Selain kontrol Presentasi-abstraksi dan pola lain yang digunakan dalam inti Drupal , apakah ada pola desain lain yang secara jelas digunakan dalam modul kontribusi yang lebih populer seperti Views, CCK, dan Fitur?
Selain kontrol Presentasi-abstraksi dan pola lain yang digunakan dalam inti Drupal , apakah ada pola desain lain yang secara jelas digunakan dalam modul kontribusi yang lebih populer seperti Views, CCK, dan Fitur?
Jawaban:
Satu tempat untuk memulai adalah dengan inti itu sendiri dan pola-pola yang terpapar contrib. - penulisan yang bagus oleh Larry Garfield (Crell) dapat ditemukan di artikel Drupal Watchdog .
Pengamat, pengunjung, dan pengintip
Drupal sebenarnya dibangun di atas pola kembar Observer dan Visitor, meskipun tidak memanggil mereka dengan nama. Sebaliknya, itu menyebut mereka kait.
hook_node_load(),,hook_user_login()dan sebagainya adalah, pada dasarnya, pengamat pada node dan pengguna.hook_form_alter(),,hook_node_view()dan sebagainya, pada dasarnya, pengunjung. Karena Drupal tidak membedakan keduanya, beberapa kaitan bisa dianggap sebagai kedua pola tetapi prinsipnya sama.Pabrik dan perintah
Ada beberapa variasi pada pola Pabrik, tetapi semuanya bermuara pada ide yang sama: Satu objek, klien, meminta objek lain, sebuah pabrik, untuk implementasi yang sesuai dari sepotong logika, tetapi tidak peduli mana itu. . Terserah pabrik untuk memutuskan. Pertimbangkan
db_insert()fungsinya, bit-bit penting yang ditunjukkan di bawah ini:function db_insert($table, array $options = array()) { // ... return Database::getConnection($options['target'])->insert($table, $options); }The
Database::getConnection()Metode adalah pabrik yang mengembalikan koneksi objek yang sesuai untuk situs ini.Injeksi Ketergantungan Dokter Drupal
Dalam Drupal 6, sistem menu dimusnahkan dan ditulis ulang menjadi proses multi-langkah. Kami sekarang akan menerapkan panggilan balik halaman yang sama seperti ini:
function example_menu() { $items['node/%node/example'] = array( 'page callback' => 'example_page', 'page arguments' => array(1), // ... ); return $items; } function example_page($node) { // Do useful stuff here. }Dalam pengaturan baru ini, router menu menjadi lebih kompleks. Sebagai imbalannya, bagaimanapun, callback halaman mendapatkan node yang tergantung padanya, yaitu disuntikkan ke dalamnya. Itu memberi kita sejumlah manfaat.
Go for Broke (r)
Salah satu pendekatan umum adalah beberapa variasi pada gagasan Broker atau Mediator. Dalam desain ini, suatu objek tidak meminta informasi dari objek lain secara langsung. Sebaliknya ia meminta objek perantara, yang mungkin telah disuntikkan ke dalamnya, untuk membuat permintaan seperti itu atas namanya. Meskipun masih berarti objek pertama harus secara aktif meminta informasi, ia hanya digabungkan secara erat dengan objek mediator dan tidak dengan segudang objek lain yang mungkin perlu dimintanya informasi. Itu berarti jika sistem lain itu berubah kita hanya perlu memperbarui mediator, tidak setiap sistem yang menyentuhnya.