Thực hành tốt nhất để xây dựng các mô-đun bằng cách sử dụng các lớp


19

Tôi đang tìm cách bắt đầu xây dựng các mô-đun của mình như các lớp bây giờ lười biếng / tự động tải trong Drupal 7, và tôi rất thích xem xét một số mô-đun (đóng góp hoặc cốt lõi) đang làm rất tốt công việc đó.

Có một cách sáng tạo để tích hợp một lớp như móc? Tôi có triển khai từng tính năng như một plugin ctools không?

Bất kỳ người qua đường nào cũng cần lưu ý rằng D7 có các files[]khai báo mới trong .infocác tệp mô-đun cho các lớp / giao diện tải tự động / lười biếng: Viết tệp .info (Drupal 7.x) .

Sau đây là một bài đọc tốt để có được các động lực và hiến pháp (như đã từng) từ cộng đồng Drupal Lập trình Drupal từ góc độ hướng đối tượng .

Câu trả lời:


16

Một mô-đun không phải là một lớp bởi Crell là những gì bạn nên đọc đầu tiên.

Phần OOP lớn nhất trong Drupal 7 là lớp trừu tượng hóa cơ sở dữ liệu mới (được thiết kế bởi cùng một Crell và các phần khác). Điều đó thực hiện nhiều mẫu có thể và nên được sử dụng lại.

Ví dụ:

Một cái gì đó vẫn còn gây tranh cãiThông tin ẩn . DBTNG thực hiện rằng bằng cách làm cho các thuộc tính lớp được bảo vệ và không cho phép truy cập trực tiếp. Mặt khác, chúng ta có hook_query_alter () và chúng có thể được thay đổi gần như tự do với nhiều phương thức getter tham chiếu khác nhau .


câu trả lời tuyệt vời, hàng tấn tài nguyên tuyệt vời để cập nhật suy nghĩ của tôi khi cấu trúc mã mô-đun của tôi!
bầu chọn

3

Đây là một câu hỏi thú vị.

Ý tưởng về một mô-đun Drupal như một lớp học rất thú vị. Tuy nhiên, ngay cả trong các mô-đun D7 chỉ cần thực hiện các hàm hook được kiểm tra theo tên, vì vậy ngay cả khi bạn tạo một lớp cho mô-đun của mình, bạn vẫn sẽ cần phải thực hiện các hàm hook để gọi chúng.

Tuy nhiên, nhiều mô-đun sử dụng các lớp bên trong và hiển thị chức năng thông qua các lớp này. Ví dụ rõ ràng nhất là quan điểm. Vì vậy, đó có thể là một nơi tốt để xem xét. Tuy nhiên, hãy lưu ý rằng nhiều mô-đun sử dụng các lớp theo cách riêng của chúng, vì vậy những gì bạn học được từ việc xem các khung nhìn có thể không phải lúc nào cũng có thể áp dụng được.


Cảm ơn vì sự sáng suốt và tôi đã cho rằng tôi vẫn cần phải có hook_fifts để đăng ký đúng cách trong Drupal nhưng tôi tò mò về cách các mô-đun triển khai nó. Tôi sẽ xem mô-đun khung nhìn (và hy vọng không bị mất) - vui lòng cập nhật câu trả lời của bạn nếu bạn tìm thấy bất kỳ trường hợp / ví dụ riêng biệt nào về mẫu bạn tìm thấy: D
electblake

2

API thực thể (mô-đun đóng góp) cho phép bạn khai báo một "lớp thực thể" cho từng loại thực thể của bạn, vì vậy tất cả các mã liên quan đến thực thể của bạn (tạo, tải, lưu, truy cập, v.v.) có thể đi vào một lớp (xem cách Organic Các nhóm làm điều đó, ví dụ).

Điều đó nói rằng, đừng lạm dụng nó. Các plugin ctools là một điều tốt khi bạn cần chúng (bạn đang viết các Chế độ xem, Bảng hoặc Quy tắc tiếp theo), nhưng sử dụng các lớp ở mọi nơi chỉ vì sự thuần khiết về ý thức hệ sẽ không giúp bạn nhiều.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.