Jak działa AOP (programowanie zorientowane na aspekt) w Drupal. Dowiedziałem się o AOP pod względem wykorzystania go do logowania i bezpieczeństwa, ale jak to ma zastosowanie do Druoala?Jak działa AOP w Drupal?
Odpowiedz
Drupal naśladuje paradygmaty AOP za pomocą haków, które w zasadzie pozwalają programistom na tkanie w bitach kodu podczas wykonywania operacji. możesz rzucić okiem na haki, które programista może zaimplementować: here.
jako szybki przykład, gdy tworzyłem nowy moduł oparty na węźle (węzły stanowiące podstawową formę danych w drupalu), mam natychmiastowy dostęp do komentarzy i taksonomii bez żadnej dodatkowej pracy z mojej strony. moduły komentarzy i taksonomii mają możliwość przechwytywania do węzłów i zapewniają tę dodatkową funkcjonalność. więc w tym sensie nie muszę uwzględniać takich funkcji w moim programie, ale jestem w stanie wykorzystać tę elastyczność.
Drupal jest "multi-paradigm" ramy, a tylko pewne fragmenty to osiągnąć "rodzaj" AOP:
- Drupal 7 na renderowania() funkcji, na przykład, konwertuje zagnieżdżonymi tablic do wyjściowego kodu HTML, wybierając odpowiednie szablony oparte na podstawowych regułach pierwszeństwa: w ten sposób Drupal zachowuje się podobnie do silnika przekształceń XSLT, w którym pliki szablonu tematu razem wzięte stanowią wejściowy plik .xsl, a gniazdo tablicy wejściowej jest początkowe. plik xml. Oznacza to, że istnieje coś elegancko funkcjonującego w sposobie działania kompozycji.
- Ponadto warstwa abstrakcji bazy danych D7 jest zbliżona do "prostej" orientacji obiektu, chociaż jak zauważa Larry (patrz dalej), w tej warstwie OO występuje niewielka ilość quasi-AOP.
Paradygmat AOP Drupala może być lepiej zwizualizowany jako napędzany zdarzeniami, a dzieje się tak dzięki koncepcji haków Drupala. Na przykład, kiedy należy wykonać następujące czynności:
- napisać moduł o nazwie mymodule
- w mymodule.module utworzyć funkcję o nazwie
mymodule_init()
- włączyć ten moduł w Drupal
kim jesteś deklaracja jest pseudokodem:
subscribe mymodule to "hook events" of type init
Kiedy rdzeń Drupala następnie działa module_invoke_all('init')
(zwany w _drupal_bootstrap_full()
- code available here) jest to Drupal mówiąc
notify all subscribers to "hook events" of type init that this has occurred
by passing any relevant arguments to them
and letting them run the code they define in their hook_init()
Więc gdy PHP jest jeszcze język proceduralny - a mymodule_init()
może zrobić wszelkiego rodzaju szalonych, niekapsułkowanych rzeczy jeśli naprawdę chciał - Drupal jest nadal odpowiedzialny za . Drupal w pewnym sensie decyduje, czy zadzwonić na swój kod w pierwszej kolejności.
W ten sposób, Drupal jest w stanie zamienić swoje fazy wykonawcze do quasi-AOP, definiując wspólnych punktów (Funkcje module_invoke*()
) i pozwalając pisać własne punktów przekroju (czynność mymodule_*()
. Którego nazewnictwo Konwencja musi pasować do nazwy haka Drupala.)
Aby uzyskać więcej informacji na ten temat, a także na temat wieloparadygmatycznej natury Drupala, spróbuj Larry Garfield's excellent blogpost.
- 1. Drupal 7 preprocess_views nie działa
- 2. Stosowanie AOP
- 3. Obsługa AOP w Delphi
- 4. Jak motywować widok w drupal
- 5. Jak importować widok w Drupal?
- 6. jak zaimplementować aop w kątowej 2
- 7. Wiosna @ Transakcja w aspekcie (AOP)
- 8. Spring aop wiele wskazówek i porad, ale tylko ostatni działa
- 9. cezu w Drupal: Załaduj Viewer na stronie w Drupal
- 10. Aspekt wiosny AOP nie działa przy użyciu Mockito
- 11. AOP Exception Handling
- 12. Drupal: Jak uzyskać listę modułów
- 13. Jak wydrukować pole obrazu drupal?
- 14. Spring AOP: "nie można znaleźć deklaracji dla elementu" aop: config ""
- 15. Jak scalić zmiany w bazie danych Drupal
- 16. Jak utworzyć niestandardowy token w Drupal 7?
- 17. Jak dodać zakładki z przodu w Drupal?
- 18. Jak utworzyć galerię obrazów w Drupal 7?
- 19. Jak utworzyć nowy motyw w drupal 7
- 20. jak edytować htm/css w drupal theme?
- 21. Jak zaimplementować hook_theme w drupal 7?
- 22. Jak używać sprawdzania formularza w Drupal 7
- 23. Testowanie Spring AOP Aspekt
- 24. Wiosną AOP (Aspect) niewykonanie
- 25. AOP z Grails
- 26. Spring aop java.lang.NoClassDefFoundError
- 27. Jak zmienić wartość zwracaną przez sprężynę aop
- 28. Usuń Witamy w Drupal 8
- 29. Drupal: przypisanie ról w user_save
- 30. Jak zastąpić węzeł strony głównej tpl - drupal