imagenator/start

Microframework php

v1.0 2021-10-10 12:31 UTC

This package is auto-updated.

Last update: 2024-04-11 20:05:26 UTC


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