imagenator / start
Microframework php
Installs: 3
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:project
Requires
- illuminate/database: 8.x-dev
- phpunit/phpunit: 9.5.x-dev
- ramsey/uuid: 4.x-dev
- robmorgan/phinx: dev-master
- symfony/http-foundation: 5.4.x-dev
- twig/twig: ^3.0
- vlucas/phpdotenv: 5.3.x-dev
Requires (Dev)
- symfony/var-dumper: 5.4.x-dev
README
Позволяет создать простенький сайт, не используя сложные фреймворки, Imagenator это мини-фраймворк который поддерживает роутинг (POST/GET), в котором есть встроеный шаблонизатор, встроенные миграции, модели и PHPunit
Установка и Автозагрузка
Этот пакет сопровождается файлом composer.json, что позволяет использовать
Composer для его инсталляции и автозагрузки composer create-project imagenator/start
Так же можно установить его загрузив исходные файлы проекта в виде Zip архива или клонировав этот репозиторий. Все компоненты этого пакета загружают зависимости автоматически.
Перед использованием рекомендуется выполнить тестирование с помощью утилиты PHPUnit вызвав ее в корневом каталоге пакета.
composer exec --verbose phpunit tests -- --coverage-text
Документация
1.0 Структура папок
Директория app содержит базовые классы для работы фреймворка
В директории public находятся все зависимые файлы, такие как css, js, fonts и подобные
Директория src хранит дополнительные файлы фреймворка, модели, контроллеры и миграции
1.1 /public/index.php
Главный файл с которого всё начинается, подключает framework
Загружает .env
и другое
1.2 Создание роута
В файле /app/App.php указываются роуты, и их обработчики Пример создания
$router->addRoute('GET', '/', ['UploadController', 'showPage']);
Синтаксис
$router->addRoute('метод(GET или POST)', 'путь', ['название класса', 'метод класса']);
Для небольших страниц можно использовать функции вместо контроллера, пример
$router->addRoute('GET', '/', 'Imagenator\Controller\MyFunction');
НЕ СОВЕТУЮ ИСПОЛЬЗОВАТЬ, т.к это не очень удобно, и не лучшее решение, лучше использовать анонимные функции
Анонимные функции
$router->addRoute('POST', '/', function ($response, $request) { /*some code*/ });
В контроллер передаются два параметра $response
и $request
1.3 Создание конроллера
В папке /src/Controller создаются все контроллеры
Пример контроллера (SecondController.php)
namespace Imagenator\Controller; class SecondController { /** * @param $response * котроллер для формирования ответа * @param $request * содержит в себе информацию о запросе * @return mixed */ public function blablabla($response, $request) { return $response->setBody("Hello))"); //Вывести на экран "Hello))" } }
В метод передаются два параметра $response
и $request
$request
- содержит в себе всё об запросе (подробнее)
$response
- содержит набор методов для формирования ответа
$response и $request так-же передаются функциям в качестве параметров
1.4 Формирование ответа
/** * @param $response * @param $request * @return mixed */ public function form($response, $request) { return $response->view('form') // Выбрать шаблон form из папки /templates, (без .twig) ->setStatus(201) //Указать что код ответа 201 ->setHeader('Content-type', 'text/html;') //Указать Content-type ->setBody('sample text') //Выводит на экран текст (отменяет действие view) ->redirect('example.com', 'code (optional)'); //создаёт редирект /** * ВАЖНО вернуть $response отбратно используя return */ }
ВАЖНО вернуть $response отбратно используя return
Пример контроллера
public function page($response, $request) { $name = $request->request->get('name'); //получаем из POST поле 'name' return $response->view('index', ['name' => $name]) //Возвращаем шаблон с параметрами (в нашем случае с $name) ->setStatus(202); //Устанавливаем статус 202 }
1.5 База данных
Для работы с базой, необходимо настроить подключение к самой базе, в файле .env
в корне проекта
Директория с моделями /src/Models/
Документация по созданию и работе с моделями тут
1.6 Миграции
Директория с миграциями /src/Migrations/
Документация по настройке тут
Команда для создания миграции
php vendor/bin/phinx create MyMigration
Запустить миграцию
php vendor/bin/phinx migrate