/framework_test

учебный framework

Primary LanguagePHP

Структура приложения Yii

app/             - каталог приложения
    controllers/ - контроллеры
    models/      - модели
    view/        - виды приложения
fra/             - framework
    db/          - работа с базами данных
        builder/ - построитель запроса
    web/         - базовые классы для Веб приложения
web/             - корневая директория Web приложения. Содержит файлы, доступные через Web
test/            - phpunit тестирования

Веб приложения

Ниже представлен код входного скрипта

// создание приложения
$frontController = new fra\web\FrontController();

// вызов метода для обработки входящего запроса
$frontController->run();

Контроллеры

Действия

Следующий пример показывает post контроллер с двумя действиями: view и create:

namespace app\controllers;

use fra\web\Controller;

class Post extends Controller
{
    public function actionView()
    {
    }

    public function actionCreate()
    {
    }
}

Маршруты

  • ID контроллера: строка, которая уникально идентифицирует контроллер среди всех других контроллеров одного и того же приложения
  • ID действия: строка, которая уникально идентифицирует действие среди всех других действия одного и того же контроллера.

Маршруты могут иметь следующий формат:

ID/ActionID

Таким образом, если пользователь запрашивает URL http://hostname/site/index, то index действие в site контроллере будет вызвано.

Контроллер по умолчанию - Site

Действие по умолчаню - actionIndex

Создание действий

Создание действий не представляет сложностей также как и объявление так называемых методов действий в классе контроллера. Метод действия это public метод, имя которого начинается со слова action.

Модели

Модели являются частью архитектуры MVC (Модель-Вид-Контроллер). Они представляют собой объекты бизнес данных, правил и логики.

Вы можете создавать классы моделей путём расширения класса fra\db\Model.

Атрибуты

Модели предоставляют рабочие данные в терминах атрибутах. Каждый атрибут представляет собой публично доступное свойство модели.

Вы можете получить доступ к атрибуту как к обычному свойству объекта:

$model = new \app\models\Contact;

// "name" - это атрибут модели Contact
$model->name = 'example';
echo $model->name;

Виды

Рендеринг видов

// $view путь файла
// на пример __DIR__ . '/../view/index.php'
$this->view->display($view);