Окрім презентації-контролю абстракції та інших моделей , які використовуються в ядрі Drupal , чи існують якісь інші шаблони дизайну, які помітно використовуються в більш популярних модулях, таких як Views, CCK та Особливості?
Окрім презентації-контролю абстракції та інших моделей , які використовуються в ядрі Drupal , чи існують якісь інші шаблони дизайну, які помітно використовуються в більш популярних модулях, таких як Views, CCK та Особливості?
Відповіді:
Слід почати з самого ядра та шаблонів, що піддаються набору. - чудове написання Ларрі Гарфілд (Крелл) можна знайти у статті про сторожову друкарню .
Спостерігачі, відвідувачі та підглядачі
Drupal насправді побудований на шаблонах близнюків спостерігача та відвідувача, хоча він не називає їх по імені. Натомість це називає їх гачками.
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. }
У цій новій настройці маршрутизатор меню стає складнішим. Натомість, зворотний виклик сторінки отримує той вузол, від якого він залежить, передається йому, тобто вводиться в нього. Це дає низку переваг.
Перейти на Broke (r)
Один загальний підхід - це певна варіація ідеї брокера чи посередника. У цій конструкції об’єкт не вимагає інформації безпосередньо від іншого об'єкта. Натомість він просить посередницький об’єкт, який, можливо, був введений у нього, зробити такий запит від свого імені. Хоча це все ще означає, що перший об'єкт повинен активно запитувати інформацію, він лише щільно пов'язаний з об'єктом-посередником, а не з безліччю інших об'єктів, від яких може знадобитися запитувати інформацію. Це означає, що якщо ті інші системи змінюються, нам потрібно лише оновити посередника, а не кожну систему, яка його торкається.