게다가 프리젠 테이션 - 추상화 - 제어 및 다른 패턴 되는 드루팔 코어에 사용 , 눈에 띄게 더에서 사용되는 다른 디자인 패턴이 있습니다 인기 기여 모듈 등의 조회수, CCK, 및 기능 등은?
게다가 프리젠 테이션 - 추상화 - 제어 및 다른 패턴 되는 드루팔 코어에 사용 , 눈에 띄게 더에서 사용되는 다른 디자인 패턴이 있습니다 인기 기여 모듈 등의 조회수, CCK, 및 기능 등은?
답변:
시작해야 할 곳은 핵심 그 자체와 패턴에 영향을주는 것입니다. -Larry Garfield (Crell)의 훌륭한 글은 Drupal Watchdog 기사 에서 찾을 수 있습니다 .
관찰자, 방문자 및 엿보는 톰
Drupal은 실제로 Observer와 Visitor의 두 가지 패턴을 기반으로 구축되었지만 이름으로 부르지는 않습니다. 대신 후크라고합니다.
hook_node_load(),hook_user_login()등은 본질적으로 노드와 사용자에 대한 관찰자입니다.hook_form_alter(),hook_node_view(), 등, 본질적으로, 방문자. Drupal은 두 가지를 구별하지 않기 때문에 일부 후크는 두 패턴 모두로 간주 될 수 있지만 원칙은 동일합니다.공장 및 명령
팩토리 패턴에는 몇 가지 변형이 있지만 모두 동일한 아이디어로 요약됩니다. 한 객체, 클라이언트는 다른 객체, 팩토리에 논리 조각의 적절한 구현을 요청하지만 어느 것이 어떤 것인지 신경 쓰지 않습니다. . 결정은 공장에 달려 있습니다.
db_insert()중요한 비트가 아래에 표시된 기능을 고려하십시오 .function db_insert($table, array $options = array()) { // ... return Database::getConnection($options['target'])->insert($table, $options); }이
Database::getConnection()메소드는이 사이트에 적합한 연결 오브젝트를 리턴하는 팩토리입니다.닥터 드루팔의 의존성 주입
Drupal 6에서 메뉴 시스템은 다단계 프로세스로 수정되었습니다. 이제 다음과 같은 페이지 콜백을 구현합니다.
function example_menu() { $items['node/%node/example'] = array( 'page callback' => 'example_page', 'page arguments' => array(1), // ... ); return $items; } function example_page($node) { // Do useful stuff here. }이 새로운 설정에서 메뉴 라우터는 더욱 복잡해집니다. 그러나 그에 대한 응답으로 페이지 콜백은 페이지 콜백이 전달 된 노드를 가져옵니다. 그것은 우리에게 많은 혜택을줍니다.
파산으로 이동 (r)
일반적인 접근 방식 중 하나는 브로커 또는 중재자 개념에 대한 변형입니다. 이 디자인에서 개체는 다른 개체의 정보를 직접 요청하지 않습니다. 대신에 주입되었을 수있는 중개 오브젝트를 대신하여 요청합니다. 여전히 첫 번째 객체가 적극적으로 정보를 요청해야한다는 것을 의미하지만, 정보를 요청해야하는 무수한 다른 객체가 아니라 중재자 객체에만 밀접하게 연결되어 있습니다. 즉, 다른 시스템이 변경되면 중재자와 접촉하는 모든 시스템이 아니라 중재자 만 업데이트하면됩니다.