Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TulaCo PHP Framework или построение корпоративного фреймворка на базе ZF2

fwdays
October 18, 2013

TulaCo PHP Framework или построение корпоративного фреймворка на базе ZF2

fwdays

October 18, 2013
Tweet

More Decks by fwdays

Other Decks in Programming

Transcript

  1. TulaCo PHP Framework построение корпоративного фреймворка на базе ZF2 Даниил

    Кожемяко Team Leader, TulaCo [email protected] @kozhemyako https://github.com/dannytrue http://zf2.by/
  2. Выбрать правильный фреймворк! • хороший • удобный • мощный •

    быстрый • покрытый тестами • легко расширяемый • хорошо документированный
  3. Компоненты • Log system • Mail system • Media system

    • Message system • RESTful API • Simple Article system • User Auth system • User management • User settings • Admin interface • ADS management • Catalog system • CLI interface • Comment system • Core • Grid system • Info pages system • Integration with Social Networks
  4. CLI

  5. ZF-Commons • zfc-base • zfc-user ◦ Регистрация ◦ Аутентификация •

    zfc-user-doctrine-orm ◦ Адаптер для работы через Doctrine 2 • zfc-rbac ◦ Авторизация ▪ Роли ▪ Разрешения ▪ Динамические роли ▪ Фаерволы
  6. Возможности • Сортировка данных • Фильтрация данных • Постраничный вывод

    результатов • Редактирование данных прямо в таблице • Возможность изменения сразу несколько строк • Стандартные экшн кнопки (редактировать, удалить) • Кастомные кнопки (пересчитать, отправить в космос) • Поддержка разных типов данных с преобразованием через фильтр • Кастомные CSS стили, классы • Поддержка различных шаблонов • Легкость использования “из коробки” • Легкость программирования дополнительного функционала • Кроссбраузерность
  7. Минимальная конфигурация class IndexController extends CRUDController { … public function

    listAction() { $this->setPreviousUrl(); $view = new ViewModel( array( 'title' => $this->getTitle(), 'gridOptions' => array('controller' => $this), ) ); $view->setTemplate($this->getListTemplate()); return $view; } … } Вызов в шаблоне: <?php echo $this->gridHelper($gridOptions) ?>
  8. Расширенные настройки ‘controller’ - контроллер Type: instanceof \TulaBase\Controller\CRUDController ‘model’ -

    DomainModel или её имя класса откуда будут браться данные. Type: instanceof \TulaBase\Model\Domain ‘repository’ - объект репозитория. Type: instanceof \Doctrine\ORM\EntityRepository ‘order’ - массив параметров сортировки. Type: array ‘queryBuilder’ - в него устанавливаются все фильтры и сортировки. Type: instanceof \Doctrine\ORM\QueryBuilder. ‘displayColumns’ - колонки, которые будут показаны в гриде Type: array ‘excludingColumns’ - колонки у которых будет отсутствовать сортировка и фильтрация Type: array ‘columnOutputCallbacks’ - массив обработчиков вывода значений в ячейки Type: array ‘buttons’ - набор кнопок, который будет показан напротив каждой записи в столбце ‘Action’ Type: array
  9. Способы • Autoloader Classmap • Template Map • Plugin Map

    • Module Config Cache • Cache Query result • Full page cache • Lazy Load
  10. Full page cache "stroker/cache" • By route name • By

    controller class name • By regex on the URI