alkemann / h2l
这是一个用于网站和API的微框架。它是h.l的续作,专为PHP 8制作。
v0.64.0
2022-07-24 13:06 UTC
Requires
- php: ^8.1
Requires (Dev)
- phpstan/phpstan: ^0.12.4
- phpunit/phpunit: ^9
Suggests
- ext-curl: For remote API usage
- ext-pdo: For the MySql, Postgres and Sqlite Datasources.
- alkemann/debug: Convenient var_dump replaces for debug and development, require-dev only
- dev-master
- v0.64.0
- v0.62.0
- v0.61.0
- v0.60.0
- v0.59.0
- v0.58.0
- v0.57.0
- v0.56.1
- v0.56.0
- v0.55.0
- v0.54.0
- v0.53.0
- v0.52.3
- v0.52.2
- v0.52.1
- v0.52.0
- v0.51.0
- v0.50.0
- v0.49.0
- v0.48.1
- v0.48.0
- v0.47.3
- v0.47.2
- v0.47.1
- v0.47.0
- v0.46.2
- v0.46.1
- v0.46.0
- v0.45.1
- v0.45.0
- v0.44.0
- v0.43.1
- v0.43.0
- v0.42.0
- v0.41.0
- v0.40.0
- v0.39.1
- v0.39.0
- v0.38.0
- v0.37.0
- v0.36.0
- v0.35.0
- v0.34.0
- v0.33.1
- v0.33.0
- v0.32.2
- v0.31.2
- v0.31.1
- v0.31.0
- v0.30.0
- v0.29.0
- v0.28.3
- v0.28.2
- v0.28.1
- v0.28.0
- v0.27.2
- v0.27.1
- v0.27.0
- v0.26.1
- v0.26.0
- v0.25.1
- v0.25.0
- v0.24.0
- v0.23.0
- v0.22.1
- v0.22.0
- v0.21.0
- v0.20.2
- v0.20.1
- v0.20.0
- v0.19.1
- v0.19.0
- v0.18.1
- v0.18.0
- v0.17.1
- v0.17.0
- v0.16.3
- v0.16.2
- v0.16.1
- v0.16.0
- v0.15.0
- v0.13.1
- v0.13.0
- v0.12.0
- v0.11.1
- v0.11.0
- v0.10.0
- v0.9.1
- v0.9.0
- 0.8.5
- 0.8.4
- 0.8.3
- 0.8.2
- 0.8.1
- 0.8.0
- 0.7.0
- 0.6.0
- 0.5.2
- 0.5.1
- 0.5.0
- 0.4.0
- 0.3.0
- 0.2.2
- 0.2.0
- 0.1.0
- dev-dispatch_refector
This package is auto-updated.
Last update: 2024-09-24 17:27:12 UTC
README
快速开始,使用静态页面和小型API
文档
托管在Github pages上:https://alkemann.github.io/h2l/
要求
- PHP 8.1
安装
- 通过composer安装:
composer require alkemann/h2l
- 虽然你可以将库仅作为库使用,但它附带一个index.php文件。库附带3个骨架来帮助你开始,"min"基本上只包含index.php、最小的预期文件夹结构和hello world基本路由。你也可以使用"base",其中包含一个应用、一些基本CSS和配置文件。第三种是"example",其中包含一些更具有说明性的示例页面和动态路由。通过简单地将所选骨架文件夹内容复制到应用的根目录(可能是包含"vendor" composer的相同文件夹)进行安装:
vendor/bin/skeleton base
(使用文件和文件夹路由的自动魔幻网站)。还有更多其他骨架选项min
(裸骨头)heroku_react
(为插入即用的heroku应用设置,后端使用H2L,前端使用react-redux)heroku_min
(为插入即用的heroku应用设置,后端使用H2L)api
(没有自动路由,用于纯API应用和特定路由响应)hyper
(从Tailwind、alpine.js和HTMX开始,用于服务器端"SPA")
从骨架使用
- 通过更改文件
content/pages/home.html.php
来更改主页 - 将文件和文件夹添加到
content/pages
以添加固定路由内容 - 将路由文件包含在
webroot/index.php
中或如果您安装了基础骨架,则添加到resources/configs/routes.php
- 通过提供url的正则匹配和闭包处理程序来添加动态路由
一些示例路由
use alkemann\h2l\{Request, Router, Response, response\Json}; // Get task by id, i.e. GET http://example.com/api/tasks/12 Router::add( '|^api/tasks/(?<id>\d+)$|', function(Request $request): Response { $id = $request->param('id'); // from the regex matched url part $data_model = app\Task::get($id); return new Json($data_model); // since Task model implements \JsonSerializable } ); // http://example.com/version Router::add('version', function($r) { return new Json(['version' => '1.3']); });
原始使用
一个最小的webroot\index.php
可能看起来像这样
$root_path = realpath(dirname(dirname(__FILE__))); require_once($root_path . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php'); use alkemann\h2l\{Environment, Dispatch}; Environment::setEnvironment(Environment::PROD); Environment::set([ 'debug' => false, 'layout_path' => $root_path . 'layouts' . DIRECTORY_SEPARATOR, 'content_path' => $root_path . 'pages' . DIRECTORY_SEPARATOR, ]); $dispatch = new Dispatch($_REQUEST, $_SERVER, $_GET, $_POST); $dispatch->setRouteFromRouter(); $response = $dispatch->response(); if ($response) echo $response->render();
测试
要运行测试,您必须检出仓库并在此README.md相同的文件夹中运行./bin/runtests
。
或者,要运行测试您的应用中包含的库,您还必须要求phpunit;composer require phpunit/phpunit
然后您可以使用vendor/bin/testh2l
运行h2l测试