imagenator/start

PHP 微型框架

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

This package is auto-updated.

Last update: 2024-09-11 21:02:30 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

这是所有操作的起点,连接框架,加载 .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 - 包含有关请求的所有信息(《关于 symfony/http-foundation》了解更多)
$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
     */
}

非常重要,请使用 return 返回 $response

控制器示例

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