imagenator / start
PHP 微型框架
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
这是所有操作的起点,连接框架,加载 .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