2008-09-24 3 views

답변

4

drupal은 기본적으로 개발자가 실행 흐름 중에 코드 비트로 짜 넣을 수 있도록 후크를 통한 AOP 패러다임을 모방합니다. 개발자가 here을 구현할 수있는 후크를 살펴볼 수 있습니다.

예를 들어 새로운 노드 기반 모듈 (노드가 drupal의 기본 데이터 양식)을 개발 중이라면 내 부분에 추가 작업없이 주석 및 분류에 즉시 액세스 할 수 있습니다. 주석 및 분류 모듈에는 노드에 연결하여 추가 된 기능을 제공하는 기능이 있습니다. 그런 의미에서 필자는 프로그램에서 이러한 기능을 설명 할 필요는 없지만 유연성을 활용할 수는 있습니다.

1

드루팔은 "다중 패러다임"프레임 워크이고, 그 특정 비트 AOP "일종의"구현 :

  • 드루팔 7의() 함수 렌더링을, 예를 들면, 중첩 된 어레이들의 세트를 변환 기본 우선 순위 규칙을 기반으로 적절한 템플릿을 선택하여 출력 HTML로 변환합니다. 이렇게하면 Drupal은 함께 사용 된 테마 템플릿 파일이 입력 .xsl 파일을 구성하고 입력 배열 중첩이 초기 인 XSLT 변환 엔진과 매우 유사하게 작동합니다. XML 파일. 이것은 themeing이 작동하는 방식에 우아하고 기능적인 것을 의미합니다.
  • 또한 Dar 데이터베이스 추상화 계층은 Larry (나중에 보겠습니다)가이 OO 계층에 소량의 준 AOP가 있지만 "직선"객체 지향에 가깝습니다.

드루팔 (Drupal의 AOP 패러다임은 이벤트 구동 형으로 더 잘 시각화 될 수 있으며, 모두 Drupal의 후크 개념을 통해 발생합니다. 예를 들어, 당신이 할 때 다음

  • 당신이 무엇

드루팔에서이 모듈을 활성화 mymodule_init()

  • 라는 함수를 만들고, mymodule.module에서
  • 인 MyModule라는 모듈을 작성 선언 코드는 다음과 같습니다.

    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을 시도하십시오.

  • 관련 문제