Drupal에서 AOP (Aspect Oriented Programming)은 어떻게 작동합니까? 로깅과 보안을 위해 AOP를 사용하는 측면에서 AOP에 대해 알았지 만 Druoal에 어떻게 적용됩니까?Drupal에서 AOP는 어떻게 작동합니까?
답변
drupal은 기본적으로 개발자가 실행 흐름 중에 코드 비트로 짜 넣을 수 있도록 후크를 통한 AOP 패러다임을 모방합니다. 개발자가 here을 구현할 수있는 후크를 살펴볼 수 있습니다.
예를 들어 새로운 노드 기반 모듈 (노드가 drupal의 기본 데이터 양식)을 개발 중이라면 내 부분에 추가 작업없이 주석 및 분류에 즉시 액세스 할 수 있습니다. 주석 및 분류 모듈에는 노드에 연결하여 추가 된 기능을 제공하는 기능이 있습니다. 그런 의미에서 필자는 프로그램에서 이러한 기능을 설명 할 필요는 없지만 유연성을 활용할 수는 있습니다.
드루팔은 "다중 패러다임"프레임 워크이고, 그 특정 비트 AOP "일종의"구현 :
- 드루팔 7의() 함수 렌더링을, 예를 들면, 중첩 된 어레이들의 세트를 변환 기본 우선 순위 규칙을 기반으로 적절한 템플릿을 선택하여 출력 HTML로 변환합니다. 이렇게하면 Drupal은 함께 사용 된 테마 템플릿 파일이 입력 .xsl 파일을 구성하고 입력 배열 중첩이 초기 인 XSLT 변환 엔진과 매우 유사하게 작동합니다. XML 파일. 이것은 themeing이 작동하는 방식에 우아하고 기능적인 것을 의미합니다.
- 또한 Dar 데이터베이스 추상화 계층은 Larry (나중에 보겠습니다)가이 OO 계층에 소량의 준 AOP가 있지만 "직선"객체 지향에 가깝습니다.
드루팔 (Drupal의 AOP 패러다임은 이벤트 구동 형으로 더 잘 시각화 될 수 있으며, 모두 Drupal의 후크 개념을 통해 발생합니다. 예를 들어, 당신이 할 때 다음
- 당신이 무엇
드루팔에서이 모듈을 활성화 mymodule_init()
subscribe mymodule to "hook events" of type init
드루팔 (Drupal 's core)이을 실행하면이 (_drupal_bootstrap_full()
에서 호출 - code available here)이 드루팔 그래서
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()
PHP가있는 동안
말하는 절차 언어 - 그리고 당신이 정말로 원하는 경우mymodule_init()
미친, 캡슐화, 모든 일을 할 수 - 드루팔가 담당하고 여전히 . 드루팔 (Drupal)은 처음부터 코드를 호출할지 여부를 결정합니다. 이런 식으로 , 드루팔은 공동 점합니다 (module_invoke*()
기능)을 정의하고 당신이 당신의 자신의 포인트 컷 (당신의 mymodule_*()
함수를 작성할 수 있도록함으로써, 준 AOP에 자신의 실행 단계를 설정 할 수 있습니다. 그 이름 대회는 Drupal의 후크 이름과 일치해야합니다.)
이것에 대한 배경 지식과 Drupal의 다중 패러다임 특성은 특히 Larry Garfield's excellent blogpost을 시도하십시오.
- 1. ninject.extensions.interception을 통한 AOP는 ninject와 어떤 관련이 있습니까?
- 2. drupal에서 하나의 주석을 어떻게 인쇄합니까?
- 3. Drupal에서 두 분류를 어떻게 연결합니까?
- 4. Drupal에서 모듈에서로드하는 page.tpl.php를 어떻게 대체합니까?
- 5. 어떻게 작동합니까?
- 6. 어떻게 작동합니까?
- 7. 어떻게 작동합니까?
- 8. 메모리 조각 모음 소프트웨어. 어떻게 작동합니까? 작동합니까?
- 9. Drupal에서 블로그 블록의 템플릿을 어떻게 분리합니까?
- 10. XML :: RPC와 Drupal에서 문자열 자릿수를 어떻게 처리해야합니까?
- 11. LINQ는 내부적으로 어떻게 작동합니까?
- 12. 파이썬없이 수은이 어떻게 작동합니까?
- 13. NHibernate 플러시 - 어떻게 작동합니까?
- 14. 카테고리는 어떻게 작동합니까?
- 15. OnLive : 어떻게 작동합니까?
- 16. XNA MathHelper.SmoothStep? 어떻게 작동합니까?
- 17. 디버거는 어떻게 작동합니까?
- 18. TABLE은 AHDL에서 어떻게 작동합니까?
- 19. 세션과 쿠키는 어떻게 작동합니까?
- 20. substring()은 어떻게 작동합니까?
- 21. .htaccess 리디렉션이 어떻게 작동합니까?
- 22. WPF의 NameScope는 어떻게 작동합니까?
- 23. 옵션 양식은 어떻게 작동합니까?
- 24. win32com python.Interpreter는 어떻게 작동합니까?
- 25. GetSchemaTable()은 어떻게 작동합니까?
- 26. 급류는 어떻게 작동합니까?
- 27. GLPaint는 어떻게 작동합니까?
- 28. Eclipse에서 '서버'보기가 어떻게 작동합니까?
- 29. Emma는 어떻게 작동합니까?
- 30. 빵 부스러기는 어떻게 작동합니까?