Ngoài điều khiển trình bày trừu tượng và các mẫu khác được sử dụng trong lõi Drupal , còn có mẫu thiết kế nào khác được sử dụng nổi bật trong các mô-đun đóng góp phổ biến hơn như Chế độ xem, CCK và Tính năng không?
Ngoài điều khiển trình bày trừu tượng và các mẫu khác được sử dụng trong lõi Drupal , còn có mẫu thiết kế nào khác được sử dụng nổi bật trong các mô-đun đóng góp phổ biến hơn như Chế độ xem, CCK và Tính năng không?
Câu trả lời:
Một nơi để bắt đầu là với chính lõi và các mô hình tiếp xúc với đóng góp. - một bài viết tuyệt vời của Larry Garfield (Crell) có thể được tìm thấy trong một bài viết của Drupal Watchdog .
Quan sát viên, du khách và nhìn trộm
Drupal thực sự được xây dựng trên mô hình song sinh của Người quan sát và Người truy cập, mặc dù nó không gọi họ bằng tên. Thay vào đó, nó gọi chúng là móc.
hook_node_load()
,hook_user_login()
và, v.v., về bản chất, là người quan sát trên các nút và người dùng.hook_form_alter()
,hook_node_view()
và như vậy, về bản chất, là khách truy cập. Bởi vì Drupal không phân biệt giữa hai loại, một số móc có thể được coi là cả hai mẫu nhưng nguyên tắc là như nhau.Các nhà máy và lệnh
Có một số biến thể trên mẫu Factory, nhưng tất cả đều có cùng một ý tưởng: Một đối tượng, một khách hàng, yêu cầu một đối tượng khác, một nhà máy, để thực hiện một đoạn logic phù hợp, nhưng không quan tâm đó là gì . Đó là tùy thuộc vào nhà máy để quyết định. Hãy xem xét
db_insert()
hàm, các bit quan trọng được hiển thị bên dưới:function db_insert($table, array $options = array()) { // ... return Database::getConnection($options['target'])->insert($table, $options); }
Các
Database::getConnection()
phương pháp là một nhà máy mà trả về một đối tượng thích hợp kết nối cho trang web này.Bác sĩ phụ thuộc tiêm Drupal
Trong Drupal 6, hệ thống menu được rút ruột và viết lại thành một quá trình gồm nhiều bước. Bây giờ chúng tôi sẽ thực hiện gọi lại trang tương tự như thế này:
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. }
Trong thiết lập mới này, bộ định tuyến menu trở nên phức tạp hơn. Tuy nhiên, đổi lại, cuộc gọi lại trang sẽ nhận được nút mà nó phụ thuộc vào nó, nghĩa là, được đưa vào nó. Điều đó cho chúng ta một số lợi ích.
Đi cho Broke (r)
Một cách tiếp cận phổ biến là một số biến thể về ý tưởng của Nhà môi giới hoặc Người hòa giải. Trong thiết kế này, một đối tượng không yêu cầu thông tin từ đối tượng khác trực tiếp. Thay vào đó, nó yêu cầu một đối tượng trung gian, có thể đã được tiêm vào nó, để thực hiện một yêu cầu như vậy thay mặt cho nó. Mặc dù nó vẫn có nghĩa là đối tượng đầu tiên phải chủ động yêu cầu thông tin, nhưng nó chỉ được liên kết chặt chẽ với đối tượng hòa giải và không phải là vô số các đối tượng khác mà nó có thể cần yêu cầu thông tin từ đó. Điều đó có nghĩa là nếu các hệ thống khác thay đổi, chúng tôi chỉ cần cập nhật hòa giải viên, không phải mọi hệ thống chạm vào nó.