Apa konsep dasar di balik kait?

120

Saya sedang dalam PHP. Untuk memoles keterampilan saya, saya mulai belajar Drupal 7. Sambil belajar konsep arsitektur Drupal, istilah kait dan tali sepatu sangat membingungkan saya. Saya membaca buku "Pengembangan Pro Drupal", dan beberapa dokumentasi di drupal.org, tetapi sangat maju bagi saya untuk mempelajari bagaimana kait bekerja di Drupal untuk menampilkan halaman web.

Adakah yang bisa memberitahuku apa kata-kata sederhana itu?

Insang
sumber

Jawaban:

107

Jawaban yang lain bagus, akurat, terperinci, tapi saya tidak yakin itu adalah "kata-kata sederhana" yang menjelaskan tulang belulang konsep yang dicari si penanya.

Saya menganggap kait sebagai titik di mana kode berhenti dan berteriak, " Ada yang punya sesuatu untuk ditambahkan di sini? ". Modul apa pun dapat memiliki fungsi yang membalas ini, dan dipicu dengan data yang sesuai diteruskan pada saat itu dalam kode.

Contoh langsung yang bagus adalah hook_node_delete () . Setiap modul dapat menggunakannya untuk membuat sesuatu terjadi setiap kali sebuah node dihapus. Dokumen memberi tahu Anda kait ini meneruskan modul objek dari simpul yang dihapus itu untuk dikerjakan, dan menguraikan informasi berguna lainnya seperti tentang waktu yang tepat kapan dipanggil (mis. Bahwa itu sebelum data simpul sebenarnya dihapus dari basis data) , dan di mana dalam kode Drupal kait disebut (yang bisa lebih dari satu tempat).

Anda dapat menjelajahi apa yang ada kait dan mencari tahu data apa yang diteruskan kepada mereka dengan mengeksplorasi hal-hal yang dimulai dengan "hook_" di api Drupal .

Kait bekerja dengan konvensi nama: menggunakan hook_node_deletesebagai contoh kita, ketika proses penghapusan simpul mencapai titik di mana kait dipanggil, untuk setiap modul dengan fungsi seperti ini di [modulename]_node_delete()mana kata kait dalam nama kait diganti dengan nama modul (mis. my_amazing_module_node_delete()), fungsi-fungsi itu dipanggil.

Mengapa? Jadi, modul apa pun dapat melakukan apa saja pada titik-titik utama ini: misalnya Anda dapat melihat simpul yang dihapus dan melakukan sesuatu jika memenuhi syarat tertentu (mis., Kirim email ke administrator, atau luncurkan proses yang panjang).

Beberapa kait memungkinkan Anda mengubah hal-hal yang telah dihasilkan sebelum diproses. Misalnya, hook_menu_alter () memberikan Anda item menu saat ini yang telah dihasilkan oleh sistem. Modul apa saja dapat mendefinisikan fungsi some_modulename_menu_alter () dan melihatnya, secara opsional mengubahnya (hapus beberapa, tambahkan beberapa, sortir ...), dan kembalikan menu yang baru diubah kembali.

Ini sederhana, sangat kuat dan merupakan inti bagaimana Drupal bekerja sebagai sistem modular. Implementasi hook adalah inti dari sebagian besar modul Drupal.

Ketika melihat melalui kode modul Drupal, Anda dapat melihat fungsi mana yang berasal dari kait (sebagai lawan dari fungsi yang hanya dipanggil dari dalam kode modul itu sendiri), karena komunitas Drupal menegakkan konvensi di mana setiap implementasi kait memiliki komentar di depannya seperti ini (perhatikan bit "Implements hook _..."):

/**
 * Implements hook_some_hook().
 *
 * Some descriptive summary of what this does
 */
function my_amazing_module_some_hook() {

Beberapa modul yang bertindak sebagai API menentukan pengait mereka sendiri. Sebagai contoh, Views mendefinisikan banyak kait yang memungkinkan Anda untuk menambah, membaca, dan mengedit data di berbagai titik dalam proses membuat atau menampilkan tampilan. Anda dapat menemukan informasi tentang kait yang dibuat dalam modul khusus dari dua tempat (dengan asumsi modul mengikuti konvensi, dll.):

Bootstrap, seperti yang dijelaskan orang lain, pada dasarnya booting - saya tidak akan menduplikasi penjelasan yang jelas lainnya.

pengguna568458
sumber
53

Hooks, sebagian besar merupakan implementasi dari pola Visitor , dan Observer .

Salah satu implementasi kait yang paling umum adalah hook_menu , yang memungkinkan modul untuk mendaftarkan jalur baru dalam sistem Drupal.

function my_module_menu() {
  return array('myawesomefrontpage' => array(
    'page callback' => 'function_that_will_render_frontpage'
  ));
}

Pola yang sangat sering di Drupal adalah memiliki [DATATYPE]_infokail, dan [DATATYPE]_info_alterkail. Jika Anda ingin membuat tipe bidang baru, Anda akan mengimplementasikan field_info -hook yang relevan , dan jika Anda ingin memanipulasi yang sudah ada, Anda akan mengimplementasikan field_info_alter -hook yang sesuai .

Sunting: Seperti yang ditunjukkan Chx dalam komentar, pola pengamat berorientasi objek , yang Drupal 7 masih, sebagian besar, tidak. Namun ada halaman wiki, pemrograman Drupal dari perspektif berorientasi objek (Dibuat oleh JonBob pada 4 April 2005), yang menjelaskan bagaimana Drupal menggunakan pola kode berorientasi objek meskipun ini. Sangat menarik untuk dicatat bahwa ini menyebutkan pengamat, tetapi bukan pengunjung.

Catatan tentang Drupal 8 Ini masih agak dini, dan dapat berubah, tetapi saya ingin menambahkan bahwa sementara kait sudah cukup lama menjadi standar de-facto dalam menambahkan fungsionalitas ke Drupal, konsep plugin akan menjadi jauh lebih terlihat. di Drupal 8, dan akan memberi kita cara baru berinteraksi dengan Core. Masalah yang relevan , dan dokumentasi .

Letharion
sumber
2
Jangan dikacaukan oleh pola desain OOP. Ini bukan satu. Pengait Drupal adalah AOP. Lihat di bawah.
@ chx, sementara saya dengan bebas mengakui Anda tahu lebih baik dari saya :) dan jawaban Anda benar (saya memilihnya) saya tidak mengartikan bahwa jawaban saya salah. :) Jika Anda tidak setuju saya ingin belajar bagaimana saya salah mengerti pola implementasi mereka.
Letharion
4
Wikipedia: "Pola pengamat adalah pola desain perangkat lunak di mana suatu objek, yang disebut subjek, memelihara daftar tanggungannya, yang disebut pengamat" di sini tidak ada objek yang memegang pengamat. Pengunjung lebih murkier tetapi prinsip generik yang sama berlaku: apa yang bukan OOP tidak dapat memiliki pola OOP.
33

Dalam istilah awam, kait adalah semacam jembatan yang menyediakan cara bagi modul untuk saling berinteraksi, mengubah struktur dan data masing-masing, memberikan data baru, dll.

Dalam kebanyakan kasus, kata hook_dalam nama fungsi diganti dengan nama modul Anda, dan itu memberikan cara bagi modul Anda untuk memanfaatkan operasi modul lain. Misalnya modul inti drupal yang disebut "simpul" memanggil berbagai kait. Salah satunya adalah hook_node_updateyang dipanggil setiap kali node yang ada diperbarui. Ketika kait ini dipanggil, mymoduleimplementasi modul Anda (sebut kami menyebutnya ) hook_node_updatedipanggil, yang dalam hal ini akan menjadi fungsi dalam file .module modul Anda yang disebut mymodule_node_update(Jelas fungsi ini dapat berada di file apa saja di folder modul Anda selama itu termasuk dalam file .module juga). Hook ini juga akan memberikan parameter (variabel) yang diperlukan yang dapat digunakan, dimodifikasi, dan / atau kembali ke fungsi yang memanggil hook.

Ketika saya pertama kali mulai belajar Drupal, saya berada di kapal yang sama seperti Anda sekarang, agak sulit untuk dipahami pada awalnya, tetapi begitu Anda mengerti, itu sangat sederhana dan intuitif. Semoga berhasil.

Beebee
sumber
1
Terima kasih atas jawaban Anda. Itu sangat membantu saya. dapatkah Anda memberi tahu apa itu konsep bootstrap di drupal dan bagaimana kait diperlakukan dalam bootstraping dengan kata-kata sederhana ketika Anda menjelaskan jawaban sebelumnya ..
GiLL
@Bayasa, silakan masukkan pemikiran Anda sendiri di sini. Saya hanya menambahkan sendiri. Anda dapat berpikir tentang meningkatkan pencetakan sebagai menyalakan komputer Anda. Drupal memiliki banyak API, termasuk basis data, file, dan formulir. Ini didasarkan pada "platform". Selama bootstrap, Drupal mendefinisikan fungsi-fungsi ini dan pengaturan lainnya (koneksi database, folder file, dll) sehingga sisa sistem dapat melanjutkan dari yang lain.
AyeshK
32

Salah satu pengembang inti menulis sebuah artikel beberapa waktu lalu yang disebut "pemrograman Drupal dari perspektif berorientasi objek" . Itu melakukan pekerjaan yang baik untuk menjelaskan bagaimana kait dapat dianggap menerapkan banyak pola desain umum . Penjelasan terbaik tentang kait berasal dari artikel:

Sistem kait Drupal adalah dasar untuk abstraksi antarmuka. Hooks mendefinisikan operasi yang dapat dilakukan pada atau oleh modul. Jika sebuah modul mengimplementasikan sebuah kait, ia masuk ke dalam kontrak untuk melakukan tugas tertentu atau mengembalikan jenis informasi tertentu ketika hook itu dipanggil. Kode panggilan tidak perlu tahu apa-apa tentang modul atau cara kait diterapkan untuk mendapatkan pekerjaan yang bermanfaat dilakukan dengan memohon kait.

mpdonadio
sumber
1
Saya memperbaiki kepenulisan artikel itu sesuai drupal.org/node/19964
@ chx, terima kasih. Saya berencana menghapus jawaban ini sekarang. Saya mempostingnya b / c Saya biasa melakukan banyak pekerjaan OO di dataran C, dan terbiasa dengan konsep OO tanpa objek nyata. Namun, Anda benar tentang hubungan pointcut / weaver. Saya tidak yakin, meskipun, jika kutipan adalah deskripsi akurat dari suatu aspek (mengabaikan bagian "antarmuka abstraksi").
mpdonadio
21

Bootstrap adalah proses yang Drupal lalui untuk membangun halaman, pada dasarnya menjalankan semua kode inti, tema, dan modul secara berurutan.
Pada dasarnya cara Drupal melakukan booting, dan bersiap untuk melakukan pekerjaannya sebagai CMS.

Ini pintar, karena memungkinkan kita untuk menempatkan kait di mana saja dalam modul dan tema kita, dan proses bootstrap memastikan mereka terhubung pada titik yang tepat.
Misalnya jika Anda menggunakan 'hook_form_alter' untuk menambahkan kotak centang khusus ke formulir, bootstrap Drupal akan memastikan ia menjalankan kode itu, tepat sebelum merender formulir Anda.

Salah satu masalah dengan bootstrap adalah bahwa seluruh proses membutuhkan waktu untuk berjalan, bahkan jika Anda hanya mengembalikan sejumlah kecil data. Saat menggunakan Drupal dengan modul layanan sebagai API dan mengembalikan banyak respons XHTML atau JSON kecil, menjalankan seluruh bootstrap tidak terlalu performan. Beberapa orang pintar mencari jalan pintas untuk Drupal 8.

Tetapi untuk merender halaman Drupal yang normal, proses bootstrap berfungsi dengan baik, ia menggunakan sistem caching Drupal untuk mempercepat, dan memberi Anda kontrol total atas setiap bagian situs Anda. Jika Anda menemukan situs Anda lambat, Anda selalu dapat menggunakan sesuatu seperti APC atau MemCached untuk membantu mempercepatnya.

Saya harap jawaban saya akurat dan menjelaskan hal-hal hanya untuk Anda, saya bukan ahli, tetapi saya pikir itulah cara kerjanya.

medden
sumber
15

Bootstrap adalah proses di mana Drupal menginisialisasi sendiri; proses sebenarnya meliputi:

  • Pengaturan kesalahan, dan penangan pengecualian
  • Menginisialisasi nilai beberapa variabel spek-global yang terkandung dalam $_SERVER
  • Menginisialisasi beberapa variabel dengan init_set()
  • Menemukan versi cache dari halaman untuk dilayani
  • Menginisialisasi basis data
  • Mengatur penangan yang memuat file saat kelas, atau antarmuka tidak ditemukan
  • Menginisialisasi variabel Drupal
  • Menginisialisasi sesi PHP
  • Menginisialisasi variabel bahasa
  • Memuat modul yang diaktifkan

Beberapa operasi yang saya jelaskan khusus untuk Drupal 7, atau lebih tinggi, tetapi sebagian besar operasi independen dari versi Drupal.

Hook adalah fungsi PHP yang bisa dipanggil dari Drupal, atau modul pihak ketiga, bila perlu untuk melakukan tugas. Alih-alih memiliki daftar fungsi yang diawali untuk dipanggil, daftar ini dibangun memeriksa modul yang diaktifkan, dan fungsi yang mereka implementasikan.
Sebagai contoh, Drupal menggunakan hook_node_update(); ketika sebuah node disimpan dengan node_save () , kode berikut dijalankan.

// Call the node specific callback (if any). This can be
// node_invoke($node, 'insert') or
// node_invoke($node, 'update').
node_invoke($node, $op);

Apa yang dilakukan node_invoke () adalah sebagai berikut:

  • Mendapatkan daftar semua modul yang diaktifkan
  • Memeriksa apakah modul yang diaktifkan memiliki fungsi yang namanya diakhiri dengan "_node_update" dan dimulai dengan nama pendek modul
  • Memanggil fungsi itu, lewat $nodesebagai parameter

Hook dapat menyimpan data mereka sendiri dalam database, atau mengubah nilai yang dikembalikan dari suatu fungsi. Kasus terakhir adalah, misalnya, apa yang terjadi dengan hook_form_alter () , yang mengubah nilai yang $formdikirimkan sebagai referensi ke drupal_prepare_form () .

Drupal hooks biasanya dipanggil menggunakan tiga fungsi:

drupal_alter()adalah fungsi yang digunakan untuk memanggil kait tertentu yang tujuannya adalah untuk mengubah data yang dikirimkannya sebagai referensi, seperti hook_form_alter () , hook_hook_info_alter () , dan hook_tokens_alter () .

Ada fungsi-fungsi lain yang digunakan untuk mengaktifkan kait, seperti node_invoke(), tetapi fungsi-fungsi tersebut pada dasarnya menggunakan salah satu fungsi yang saya sebutkan sebelumnya.

kiamlaluno
sumber
12

Hooks adalah pointcuts dan module_invoke_allmerupakan penenun (sayangnya kami tidak jelas dalam implementasinya dan ada fungsi tenun lainnya). Sejauh yang saya ketahui, Drupal adalah satu-satunya sistem untuk mengimplementasikan AOP dengan fungsi PHP.

Lihat penjelasan lain tentang Bagaimana cara kerja AOP di Drupal?

Komunitas
sumber
Apakah menurut Anda artikel jhodgdon (disebutkan dalam jawaban saya) akurat?
mpdonadio
2
Itu artikel jonbob dari 2005 atribusi salah. Saya akan memperdebatkannya, ya.
6

Jika Anda ingin melihat kait yang memungkinkan Drupal Anda hubungi, buka api.drupal.org , tab ke kotak pencarian, dan ketik 'hook_'. Ini akan memberi Anda daftar besar sebagian besar kait yang ditentukan oleh Drupal. Lakukan hal yang sama untuk '_alter' dan lihat lebih banyak lagi.

Halaman Node API Hooks menawarkan daftar kronologis semua kait yang dipanggil selama operasi simpul. Anda dapat melihat modul Node dan sistem Entity and Field saling memberikan belokan pada pengait yang digunakan.

Misalnya, jika Anda gulir ke bawah dan lihat bagian untuk node_load(): Modul Node akan memberi Anda hook_load (), dan kemudian memberikan kontrol ke sistem entitas yang memuat beberapa bidang. Ada seluruh host kait bidang yang tidak terdaftar, dan kemudian ketika itu atas sistem entitas memanggil hook_entity_load(), sebelum melewati kontrol kembali ke Node yang memanggil hook_node_load().

Ini memberi kode Anda peluang untuk bertindak pada simpul yang dipermasalahkan saat dimuat, sepotong demi sepotong. Mempelajari kait-kait ini dan kapan serta mengapa mereka dipanggil adalah bagian dari petualangan pengkodean Drupal. :-)

Sistem lain juga memiliki pengait. Seperti hook_init()dan hook_boot(). Ini sampai ke bagian bootstrap dari pertanyaan Anda. hook_boot()dipanggil oleh Drupal sebelum sistem cache dimuat. Jadi, jika modul Anda perlu melakukan sesuatu sebelum Drupal benar-benar dimulai, dan Anda ingin kode Anda berjalan terlepas dari caching, maka Anda akan menerapkannya hook_boot(). Jika tidak, jika Anda hanya peduli tentang halaman yang tidak di-cache, Anda akan menerapkannya hook_init().

Ini memberi Anda opsi untuk mengimplementasikan sesuatu di awal proses pemuatan, sebelum Drupal sepenuhnya mem-boot, sambil memberi Anda beberapa fleksibilitas mengenai titik mana dalam proses yang ingin Anda sadap.

Jika Anda perlu memastikan Drupal telah boot ke titik tertentu sebelum melanjutkan, Anda dapat menelepon drupal_bootstrap(). Jika Anda mengklik dokumentasi itu Anda dapat melihat level bootstrap tersedia, dari nol hingga semuanya.

Dan, akhirnya, Anda dapat melihat beberapa kode yang didokumentasikan secara luas untuk setiap subsistem yang diberikan pada proyek Contoh .

paul-m
sumber
OP meminta definisi kait, bukan daftar kait yang digunakan oleh Drupal.
kiamlaluno
6

Hooks adalah fungsi php, blok bangunan berdasarkan pada konvensi penamaan "yourmodulename_hookname", mereka dimaksudkan untuk memudahkan kemampuan pengembang untuk membuat modul .

Modul adalah real deal karena mereka mengaktifkan fungsi INTI dan kustom di sistem Drupal Anda. Dengan demikian, modul terbuat dari kait dan ketika sebuah modul diaktifkan di instalasi Drupal Anda, fungsi kaitnya dapat dipanggil dari modul lain berkat module.inc function module_invoke_all ($ hook) atau module_invoke.

Oleh karena itu, untuk memahami dengan benar apa kaitnya, Anda harus benar-benar mengotori tangan Anda dan mencoba pengembangan modul. Untuk tujuan ini, mulailah dengan mengunduh dan mencoba beberapa Contoh Drupal untuk Pengembang , Anda juga harus terbiasa dengan pembuatan modul .

Berikut adalah beberapa contoh Drupal yang berguna untuk pengembang yang disebutkan di atas:

contoh implementasi hook_block_view () dalam modul block_example

/**
 * @file examples/block_example/block_example.module line 127
 *
 * Implements hook_block_view().
 *
 * This hook generates the contents of the blocks themselves.
 */
function block_example_block_view($delta = '') {
  //The $delta parameter tells us which block is being requested.
  switch ($delta) {
    case 'example_configurable_text':
      // The subject is displayed at the top of the block. Note that it
      // should be passed through t() for translation. The title configured
      // for the block using Drupal UI supercedes this one.
      $block['subject'] = t('Title of first block (example_configurable_text)');

Kait ini memberi Anda akses ke kreasi Drupal untuk menampilkan blok khusus di situs web Anda. Ini dimungkinkan karena block.module memiliki fungsi _block_render_block yang memungkinkan semua modul untuk mendefinisikan tampilan hook_block mereka (perhatikan baris terakhir module_invoke):

/**
 * @file modules/block/block.module, line 838
 *
 * Render the content and subject for a set of blocks.
 *
 * @param $region_blocks
 *   An array of block objects such as returned for one region by _block_load_blocks().
 *
 * @return
 *   An array of visible blocks as expected by drupal_render().
 */
function _block_render_blocks($region_blocks) {
  ...
  foreach ($region_blocks as $key => $block) {
    ...
    $array = module_invoke($block->module, 'block_view', $block->delta);

contoh implementasi hook_menu () dalam modul render_example

/**
 * @file examples/render_example/render_example.module line 22
 * 
 * Implements hook_menu().
 */
function render_example_menu() {
  ...
  $items['examples/render_example/arrays'] = array(
    'title' => 'Render array examples',
    'page callback' => 'render_example_arrays',
    'access callback' => TRUE,
  );

Hook ini ditautkan ke sistem perutean url Drupal dan menentukan pola url dengan panggilan balik render terkait yang digunakan oleh modul Anda. Itu dipanggil dari system.module .

Tentang bootstrap, pada dasarnya, Anda hanya perlu tahu itu dijalankan pada setiap permintaan halaman. Saya benar-benar menyarankan Anda untuk membaca jawaban stackoverflow ini , ini menjelaskan bagaimana bootstrap dan kait terkait tetapi terpisah.

Mengenai tampilan halaman web, tampilan html situs web Drupal sebagian besar dicapai dengan render array dan theming.

B2F
sumber
3

Di mana saja modul memanggil module_implements () http://api.drupal.org/api/drupal/includes%21module.inc/function/module_implements/7 Drupal akan memecat semua fungsi yang dinamai dengan benar dalam urutan yang benar berdasarkan bobotnya. Ini disebut fungsi kait karena dalam dokumentasi untuk modul yang menggunakan module_implements Anda melihat hal-hal seperti hook_menu (ketika menu memanggil semua fungsi yang dirancang untuk mengembalikan item menu). Kata "hook" hanya perlu diganti dengan nama modul yang mengimplementasikannya dan Drupal yang melakukan sisanya.

Ada juga fungsi drupal_alter () yang menjalankan semua fungsi alter yang dinamai dengan benar, dengan maksud untuk membiarkan Anda mengubah hal-hal yang sebelumnya didaftarkan oleh kait lain.

Secara umum perubahan akan melewati argumen dengan referensi sehingga Anda dapat mengedit objek secara langsung, sedangkan kait "normal" biasanya membuat Anda mengembalikan hal-hal baru.

Idenya adalah bahwa setiap modul (termasuk Anda) dapat dengan mudah diperpanjang dengan meminta Drupal untuk memanggil semua fungsi kait yang diperlukan dan mendapatkan kembali apa yang mereka kembalikan untuk diproses. Modul yang memanggil fungsi hook tidak perlu tahu apa-apa tentang modul yang mengimplementasikan hook, dan modul yang mengimplementasikan hook tidak benar-benar perlu tahu apa-apa tentang modul yang memanggil hook. Satu-satunya hal yang perlu diketahui kedua modul adalah struktur data yang dikembalikan atau diubah.

Dalam praktiknya, kait biasanya digunakan untuk:

  • menanggapi acara, seperti hook_user_login dipanggil saat pengguna masuk
  • daftarkan sesuatu yang baru yang dapat digunakan untuk memperluas sistem seperti hook_menu
  • tema / render html atau build / validasikan / kirim formulir
David Meister
sumber
1

Anda memiliki banyak jawaban di atas tetapi saya ingin memberikan jawaban dengan cara yang lebih sederhana untuk memahami konsep yang sangat mendasar di balik kait. Hooks sebenarnya dibangun di fungsi dalam inti drupal untuk mengelola hal-hal yang berbeda & melakukan pekerjaan yang berbeda di dalam inti, Anda dapat menyinkronkan fungsi Anda sendiri dengan fungsi inti drupal ini untuk menambahkan fungsionalitasnya dalam fungsi Anda sendiri dengan memanggil kait yang berbeda.

Saya harap Anda akan mengerti intinya!

pengguna25892
sumber
1

Bagi saya ini semua tentang fungsi module_implements ketika datang ke hooks dan core (D7). Satu hal yang saya pikir sangat penting untuk dipahami adalah bahwa dengan menulis kait untuk memodifikasi sesuatu, Anda tidak boleh memiliki suara terakhir dalam apa yang terjadi pada struktur data yang Anda hadapi. Hook Anda cukup masuk dalam garis (antrian) fungsi yang JUGA bekerja pada struktur data yang sama apakah itu menu, menu_links, blok, node, pengguna atau entitas atau elemen render apa pun.

Jadi untuk benar-benar melihat kait Anda digunakan dengan cara yang diharapkan, Anda perlu tahu atau mengetahui di mana Anda (kait Anda) berdiri dalam barisan. Ini ditentukan oleh berat mondule Anda. Inti Drupal hanya memanggil kait yang disebut dengan benar dalam urutan kenaikan berat badan dan apa pun yang terjadi pada data terjadi.

Saya sudah menulis kait sebelumnya yang tidak memiliki efek apa pun, hanya untuk mengetahui setelah berjam-jam headbanging bahwa berat modul saya terlalu ringan dan kait sub-urutan secara efektif tidak melakukan apa yang saya lakukan atau benar-benar mengabaikannya bersama-sama.

Sebuah kait yang ditulis dengan baik tidak akan "menangani manusia" atau "memaksa" diri mereka untuk menjadi yang terakhir tetapi akan "menempatkan yang baik dengan yang lain" dengan memastikan mereka mempertahankan struktur data seperti yang diharapkan oleh sisa kait di telepon.

Dan berbicara tentang "Garis" kait. Selama bertahun-tahun saya mencari Google untuk hal-hal Drupal, gambar ini tampaknya merupakan representasi yang baik dari preprocess dan daftar proses kait kemungkinan.
masukkan deskripsi gambar di sini

Dan Shumaker
sumber
1

Dengan cara yang lebih sederhana, kait membantu pengembang untuk mengubah fungsi yang ada sesuai dengan persyaratan tanpa membuat perubahan pada kode yang ada. Lebih mirip fungsi abstrak di php.

Contoh: Anda telah membuat modul untuk pemesanan tiket bus. Menurut kode Anda jika tiket sekali dipesan maka lokasi pengambilan tidak dapat diedit yang merupakan persyaratan Anda untuk proyek itu. Misalkan teman Anda memerlukan modul yang sama untuk persyaratan yang sama dengan pengecualian bahwa pengguna dapat mengubah lokasi pengambilan. Entah bagaimana dia harus menggunakan modul Anda dan Anda tidak ingin dia melakukan perubahan kode. Jadi Anda menyediakan antarmuka (kaitkan dalam kasus kami) di mana ia dapat mengimplementasikan perubahannya tanpa membuat perubahan pada modul Anda.

Dalam drupal hingga drupal-7 kami memiliki kait untuk modul serta tema. Untuk mengetahui cara kerja kail, periksa apakah kail drupal.org untuk membuat kail khusus, periksa tautan ini

Anamika
sumber
0

Kait. Izinkan modul berinteraksi dengan inti Drupal. Sistem modul Drupal didasarkan pada konsep "kait". Hook adalah fungsi PHP yang bernama foo_bar (), di mana "foo" adalah nama modul (dengan nama file foo.module) dan "bar" adalah nama hook.

Amrendra Mourya
sumber