PHPixie фреймворк для разработки веб-приложений на языке PHP
Компоненты PHPixie написаны так чтобы самым простым и быстрым способом справится с 90% рутинных задач при разработке сайтов, а оставшиеся 10% сложных более редких задач предполагается разработчик решит сам и незачем их включать в сам фреймворк.
Для установка PHPixie нам понадобится Composer - система управления пакетами для PHP. Установим глобально
# cd /usr/local/bin # curl -s https://getcomposer.org/installer | php
Создадим проект с именем tutorial:
# composer.phar create-project phpixie/project tutorial 2.*-dev --prefer-dist
Обновим файлы проекта
$ cd tutorial $ composer.phar update -o
Для тестирования минифреймверка PHPixie можно запустить встроенный в PHP HTTP сервер:
# cd tutorial/web/ $ php -S localhost:8000
Как работает PHPixie
В index.php куда и попадают все запросы самые важные строчки это:
$pixie = new \App\Pixie(); $pixie->bootstrap($root)->handle_http_request();
Класс App\Pixie который является сердцем фреймворка, его DI контейнером. Через него можно получить доступ ко всем другим компонентам. App\Pixie наследует от PHPixie\Pixie из библиотеки PHPixie-Core. Базовый проект оглашает этот класс вместо использования PHPixie\Pixie напрямую для предоставления разработчику возможности внести в него свои изменения (например подключить модуль).
Сразу стоит отметить что добавлять новые сущности в этот контейнер на ходу, как например в Silex, нельзя, все надо описывать явно в классе. Следует обратить внимание на то что это не синглтон и передавать его между классами приходится явно, такой подход был избран для избежания какого-либо глобального состояния в коде, аналогично фреймворк никогда не использует статические методы. Хотя это и может показаться не таким удобным на первый взгляд, но зато позволяет добиться лучшей читабельности кода, полностью документировать все сущности (так как все они становятся атрибутами класса) а также получить подсказки по этим сущностям в IDE. Поскольку PHPixie\Pixie содержит также все фактори методы, то это позволят нам с легкостью заменить любой класс фреймворка на свой путем перегрузки соответствующего метода. Каждый модуль, например db или orm поставляет свой класс с фактори методами, эти классы прописываются в нашем App\Pixie в $modules. Потом мы можем запрашивать их как проперти, например используя $pixie→db→query() и $pixie→orm→get(), что вносит дополнительную структурированность и позволяет избежать супа из методов.
Метод bootstrap() инициализирует $pixie, считывает конфигурацию, подключает обработку исключений и т.д. Как раз в handle_http_request() проходит обработка запроса. Этот процесс состоит из таких этапов:
- Создание объекта $request класса PHPixie\Request
- Этот объект передается в соответствующий контроллер и выполняется соответствующий action
- В процессе исполнения action контроллер изменяет объект $response ( PHPixie\Response ). Данные из $response (хедеры и контент) отсылаются пользователю
Все три самых важных объекта $request, $response и $pixie доступны как атрибуты класса PHPixie\Controller.
Добавление новой пользовательской функции PHPixie
Объект $pixie — это имплементация DI Контейнера и Сервис Локатора. Он доступен как проперти контроллера и передается практически в каждый конструктор, $pixie также содержит фактори методы для каждого класса фреймворка. Добавление методов и проперти в $pixie происходит только путем расширения класса. В базовом проекте уже присутствует класс App\Pixie который наследует от PHPixie\Pixie, как раз в него мы можем добавлять свой код чтобы иметь к нему доступ повсюду. Например добавим новые функции scripts и style которые будут создавать массивы файлов css и js, для дальнейшего вывода в HTML
- classes/App/Pixie.php
<?php namespace App; class Pixie extends \PHPixie\Pixie { public $html; protected $modules = array( 'db' => '\PHPixie\DB', 'orm' => '\PHPixie\ORM' ); protected function after_bootstrap() { // Whatever code you want to run after bootstrap is done. } public function style($filecss) { $tmp = array(); foreach ($filecss as $value) { $tmp[] = '<link rel="stylesheet" href="' . $value . '" />'; } return $tmp; } public function scripts($filejs) { $tmp = array(); foreach ($filejs as $value) { $tmp[] = '<script type="text/javascript" src="' . $value . '"></script>'; } return $tmp; } }
Читайте также: MVC (Model-View-Controller)
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!
7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах