Các câu trả lời khác rất hay, chính xác, chi tiết, nhưng tôi không chắc chúng là "những từ đơn giản" giải thích cho cốt lõi của khái niệm mà người hỏi đang tìm kiếm.
Tôi nghĩ về các hook như một điểm mà đoạn mã tạm dừng và hét lên "Có ai khác có bất cứ điều gì để thêm vào đây không? ". Bất kỳ mô-đun nào cũng có thể có chức năng trả lời cho điều này và được kích hoạt với dữ liệu phù hợp được truyền cho nó tại thời điểm đó trong mã.
Một ví dụ đơn giản là hook_node_delete () . Bất kỳ mô-đun nào cũng có thể sử dụng nó để làm cho mọi thứ xảy ra mỗi khi một nút bị xóa. Các tài liệu cho bạn biết hook này chuyển qua mô-đun đối tượng của nút bị xóa đó để làm việc và phác thảo các thông tin hữu ích khác như về thời gian chính xác khi nó được gọi (ví dụ: trước khi dữ liệu nút thực sự bị xóa khỏi cơ sở dữ liệu) và trong mã của Drupal, hook được gọi (có thể nhiều hơn một nơi).
Bạn có thể khám phá những cái móc tồn tại và tìm ra dữ liệu nào được truyền cho chúng bằng cách khám phá những thứ bắt đầu bằng "hook_" trong api Drupal .
Các hook hoạt động theo một quy ước tên: sử dụng hook_node_delete
như ví dụ của chúng tôi, khi quá trình xóa nút đạt đến điểm mà hook được gọi, đối với mọi mô-đun có chức năng như thế này [modulename]_node_delete()
, trong đó hook hook trong tên hook được thay thế bằng tên của mô-đun (ví dụ my_amazing_module_node_delete()
), các hàm được gọi.
Tại sao? Vì vậy, bất kỳ mô-đun nào cũng có thể làm bất cứ điều gì tại các điểm chính này: ví dụ: bạn có thể nhìn vào nút bị xóa và thực hiện mọi việc nếu nó đáp ứng một điều kiện nhất định (giả sử, gửi email cho quản trị viên hoặc khởi chạy một quá trình dài).
Một số móc cho phép bạn thay đổi những thứ đã được tạo ngay trước khi chúng được xử lý. Ví dụ: hook_menu_alter () chuyển cho bạn các mục menu hiện tại mà hệ thống đã tạo. Bất kỳ mô-đun nào cũng có thể xác định hàm some_modulename_menu_alter () và xem xét chúng, tùy ý thay đổi chúng (xóa một số, thêm một số, sắp xếp chúng ...) và chuyển menu mới được thay đổi trở lại.
Nó đơn giản, thực sự mạnh mẽ và là trung tâm của cách Drupal hoạt động như một hệ thống mô-đun. Việc triển khai các hook là trung tâm của hầu hết các mô-đun Drupal.
Khi xem qua mã của mô-đun Drupal, bạn có thể phát hiện ra các hàm nào đến từ các hook (trái ngược với các hàm được gọi đơn giản từ chính mã mô-đun), vì cộng đồng Drupal thực thi một quy ước, theo đó mỗi lần thực hiện hook đều có nhận xét trước mặt nó như thế này (lưu ý bit "Implements hook _..."):
/**
* Implements hook_some_hook().
*
* Some descriptive summary of what this does
*/
function my_amazing_module_some_hook() {
Một số mô-đun hoạt động như API xác định các hook riêng của chúng. Ví dụ: Chế độ xem xác định nhiều móc nối cho phép bạn thêm, đọc và chỉnh sửa dữ liệu tại các điểm khác nhau trong quá trình tạo hoặc hiển thị chế độ xem. Bạn có thể tìm thấy thông tin về các móc được tạo trong các mô-đun tùy chỉnh từ hai nơi (giả sử mô-đun tuân theo các quy ước, v.v.):
Bootstrapping, như những người khác đã giải thích, về cơ bản là khởi động lên - Tôi sẽ không sao chép các giải thích rõ ràng tốt khác.