Skip to content
AntonShevchuk edited this page Jul 18, 2012 · 26 revisions

Описание

Буковка 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'];
};

Clone this wiki locally