Tôi có thể hiểu sự nhầm lẫn của bạn dựa trên ví dụ bạn cung cấp. Đó thực sự là một cách kém để sử dụng một lớp ... và chỉ vì một lớp được sử dụng, không tạo ra một hệ thống OOP.
Trong trường hợp của Hybrid, họ chỉ sử dụng một lớp để đặt tên cho các hàm của chúng. Xem xét Hybrid là một khung chủ đề , điều này được thực hiện để các chủ đề con có thể sử dụng lại tên hàm mà không cần nhà phát triển phải lo lắng về xung đột tên. Trong nhiều trường hợp, một khung chủ đề (chủ đề gốc) rất phức tạp, nhiều nhà phát triển chủ đề con sẽ không bao giờ hiểu chính xác những gì diễn ra dưới mui xe.
Nếu Hybrid không sử dụng cấu trúc lớp, các nhà phát triển chủ đề con sẽ cần biết tất cả các lệnh gọi hàm hiện có là gì để họ có thể tránh sử dụng lại tên. Và đúng vậy, bạn chỉ có thể tiền tố tất cả các chức năng của mình bằng một con sên duy nhất, nhưng điều đó làm cho mã khó đọc, khó bảo trì và vốn không thể tái sử dụng nếu bạn phát triển các hệ thống khác muốn sử dụng cùng chức năng.
Để trả lời câu hỏi của bạn
Wtf? Quan điểm của việc này là gì? Rõ ràng là bạn sẽ không sử dụng hai hoặc nhiều phiên bản của cùng một chủ đề cùng một lúc.
Không, bạn sẽ không sử dụng hai hoặc nhiều phiên bản của cùng một chủ đề. Nhưng như tôi đã nói, hãy nghĩ về cấu trúc lớp trong trường hợp này như là đặt tên cho các hàm, không tạo ra một thể hiện đối tượng truyền thống. Kết hợp mọi thứ lại với nhau trong một lớp và khởi tạo nó để gọi phương thức ( myClass->method();
) hoặc gọi phương thức trực tiếp ( myClass::method();
) là một cách rất rõ ràng để sắp xếp không gian tên mọi thứ theo cách có thể đọc lại được.
Tất nhiên, bạn luôn có thể sử dụng một cái gì đó giống như myClass_method();
thay vào đó, nhưng nếu bạn muốn sử dụng lại bất kỳ mã nào trong một chủ đề khác, trong một trình cắm thêm hoặc trong khung antoher, bạn phải quay lại và thay đổi tất cả các tiền tố của bạn. Giữ mọi thứ trong một lớp sạch hơn và cho phép bạn phát triển lại và triển khai lại nhanh hơn nhiều.
Chúng ta hãy giả sử rằng các plugin làm điều này cho không gian tên (thật vô lý), nhưng lý do chủ đề là gì? Tui bỏ lỡ điều gì vậy?
Trong phần lớn các tình huống tôi đồng ý với bạn. Tuy nhiên, phần lớn đó đang nhanh chóng suy yếu. Tôi lưu trữ một số trang web trên bản cài đặt MultiSite sử dụng các biến thể của cùng một chủ đề. Thay vì tạo lại cùng một chủ đề lặp đi lặp lại với những khác biệt nhỏ, tôi có một "lớp" duy nhất cho chủ đề chính và tất cả các chủ đề con mở rộng lớp đó. Điều này cho phép tôi xác định chức năng tùy chỉnh cho từng trang web trong khi vẫn duy trì cảm giác đồng nhất chung trên toàn bộ mạng.
Một mặt, các nhà phát triển chủ đề có thể chọn cách tiếp cận dựa trên lớp để không gian tên chức năng của họ (điều này không vô lý nếu bạn làm việc trong môi trường nơi bạn sử dụng lại nhiều đoạn mã giống nhau). Mặt khác, các nhà phát triển chủ đề có thể chọn cách tiếp cận dựa trên lớp để dễ dàng mở rộng theo các chủ đề con.
Lợi thế của việc mã hóa một chủ đề như thế này là gì?
Nếu bạn chỉ sử dụng Hybrid trên trang web của mình, có rất ít lợi thế để biết bạn là người dùng cuối. Nếu bạn đang xây dựng một chủ đề con cho Hybrid, có những lợi thế từ không gian tên và khả năng mở rộng. Nếu bạn làm việc cho ThemeHy điều chỉnh , lợi thế nằm ở việc tái sử dụng mã nhanh chóng, hiệu quả trên các dự án khác của bạn (Prototype, Leviathan, v.v.).
Và nếu bạn là nhà phát triển chủ đề thích một tính năng cụ thể của Hybrid nhưng không phải toàn bộ chủ đề, thì lợi thế nằm ở việc tái sử dụng mã nhanh chóng, hiệu quả trong dự án không kết hợp của bạn (giả sử đó cũng là GPL).