Chcę zacząć budować moje moduły jako klasy teraz, gdy leniwe / automatyczne ładowanie jest w Drupal 7, i chciałbym spojrzeć na niektóre moduły (contrib lub core), które świetnie sobie z tym radzą.
Czy istnieje kreatywny sposób na zintegrowanie klasy jako haczyków? Czy implementuję każdą funkcję jako wtyczkę Ctools?
Każdy przechodzący powinien zauważyć, że D7 ma nowe files[]
deklaracje w .info
plikach modułów dla klas / interfejsów auto / leniwych ładujących: Pisanie plików .info (Drupal 7.x) .
Poniżej znajduje się dobra lektura, aby uzyskać motywacje i konstytucję (niejako) ze społeczności Drupal Programowanie Drupal z perspektywy obiektowej .
To interesujące pytanie.
Idea modułu Drupal jako klasy jest bardzo interesująca. Jednak nawet w modułach D7 po prostu implementuj funkcje przechwytujące, które są sprawdzane według nazwy, więc nawet jeśli utworzysz klasę dla swojego modułu, nadal będziesz musiał zaimplementować funkcje przechwytujące, aby je wywołać.
Jednak wiele modułów używa klas wewnętrznie i udostępnia te funkcje za pomocą tych klas. Najbardziej oczywistym przykładem są widoki. To może być dobre miejsce do patrzenia. Należy jednak pamiętać, że wiele modułów używa klas na swój sposób, więc to, czego się uczysz na podstawie widoków, może nie zawsze mieć zastosowanie.
źródło
Entity API (moduł contrib) pozwala zadeklarować „klasę encji” dla każdego z typów encji, dzięki czemu cały kod związany z twoją encją (tworzenie, ładowanie, zapisywanie, dostęp itp.) Może przejść do klasy (zobacz, jak Organic Grupy to robią, na przykład).
To powiedziawszy, nie przesadzaj. Wtyczki ctools są dobre, gdy ich potrzebujesz (piszesz następne widoki, panele lub reguły), ale używanie klas wszędzie dla ideologicznej czystości nie przyniesie ci wiele dobrego.
źródło