-
Notifications
You must be signed in to change notification settings - Fork 39
Controller
Буковка C из MVC
Нет
Простой контроллер Для создания своего контроллера (понятие action нет в Bluz) необходимо создать файл с анонимной функцией в директории модуля:
<?php
// application/modules/%module%/%controller%.php
// return!!!
return
function () {
};
Теперь создадим view:
<!-- application/modules/%module%/views/%controller%.phtml -->
<h2>Hello!</h2>
Всё - URL должен ожить /%module%/%controller%/
Магия - мы можем получать параметры запросов как входящие параметры функции-контроллера:
<?php
return
function ($id, $text) {
echo $id;
echo $text;
};
Так же можем явно указать тип входных параметров используя PHPDoc:
<?php
return
/**
* @param integer $id
* @param string $text
*/
function ($id, $text) {
// integer
echo $id;
// string
echo $text;
};
Вспоминаем о замыканиях и конструкции use и используем ее для работы с пакетами приложения:
<?php
return
/**
* @var closure $bootstrap
* @var Bluz\Request $request
* @var Bluz\View $view
* @return View
*/
function() use ($bootstrap, $request, $view) {
};
Используем только то, что нам надо, хотя практически все из перечисленного можно получить из объекта $this, что по сути есть Application (спасибо PHP 5.4 за эту возможность)
Отдельно стоит отметить $bootstrap - это анонимная функция которая должна быть в папке модуля, что внутри, и что она будет делать решать вам.
Для кеширования вывода достаточно в PHPDoc прописать @cache 5 - таким образом вывод будет кешироваться на 5 минут используя в качестве ключа текущие входные параметры.
<?php
/**
* @param integer $id
* @cache 5
*/
function($id) use () {
};
Если ваш контроллер вернёт false, то таким образом вы отключите использование шаблонизатора:
<?php
function() use () {
// do something
return false;
};
Если ваш контроллер вернёт анонимную функцию, то она будет вызвана взамен использования шаблонизатора:
<?php
function() use () {
// do something
return function() {
echo 'foo';
};
};
Если ваш контроллер вернёт массив данных, то система посчитает, что эти данные необходимо занести во View, или JSON, в зависимости от выбранного пути:
<?php
function() use () {
// do something
return ['foo' => 'bar'];
};
Acl
Application
Auth
Cache
Common
— Exception
— Collection
— Container
— Helper
— Options
— Singleton
Config
Controller
— Data
— Mapper
—— Crud
—— Rest
— Reflection
Crud
— Crud Table
Db
— Row
— Table
— Relations
— Query
Debug
EventManager
Grid
Http
Layout
Logger
Mailer
Messages
Nil
Proxy
Registry
Request
Response
Router
Session
Translator
Validator
View