it-swarm-vi.com

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

Tôi đang tìm cách bắt đầu xây dựng các mô-đun của mình khi các lớp bây giờ lười biếng/tự động tải đang ở 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 một công việc tuyệt vời của nó.

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 khai báo files[] Mới trong các tệp .info 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 độ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 .

19
electblake

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 lớn nhất OOP 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ì đó là vẫn còn tranh cãiẨn thông tin . 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 bằng tham chiếu getter .

16
Berdir

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

Ý tưởng về một mô đun Drupal là một lớp 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 sẽ vẫn cần phải thực hiện các chức năng 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.

3
Jeremy French

API thực thể (mô-đun đóng góp) cho phép bạn khai báo "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.

2
Bojan Zivanovic