wscore /
为旧版和简单的PHP脚本提供页面控制器。
0.5.0
2022-02-24 02:10 UTC
Requires
- ext-mbstring: *
- aura/session: ^2.1
- laminas/laminas-diactoros: ^2.0
- wscore/validation: ^2.0
This package is not auto-updated.
Last update: 2024-09-19 14:13:22 UTC
README
一个为优秀的旧版(且臭名昭著)PHP代码提供的页面控制器。
这是一个组件,希望它能让我这样的人(也就是我)在维护旧式PHP代码时更加容易。
例如,以下
http://example.com/example.php
目标是让你在直接访问PHP的情况下,也能自由地使用控制器。
许可证
MIT许可证
安装
针对PHP 5.6进行优化。目前仅提供beta alpha版本。
composer require "wscore/pages: ^0.1"
演示
git clone https://github.com/WScore/Pages cd Pages composer install cd public php -S localhost:8000 index.php
在浏览器中访问 localhost:8000。
简单使用
相对正常。
- 为页面创建一个
Controller并生成一个对象。 - 使用
Dispatch执行控制器。 - 在视图目录下创建一个HTML页面。
创建一个控制器。
通过继承 ControllerAbstract 来创建它。
use WScore\Pages\AbstractController; class MyController extends AbstractController { private $user; public function __construct($loginUser) { $this->user = $loginUser; } public function onGet($id) { return $this->render('user.php', [ 'user' => $this->user, ]); } }
运行控制器。
在一个PHP文件中执行(Dispatch)控制器。
use Laminas\Diactoros\ServerRequestFactory; use WScore\Pages\Dispatch; $request = ServerRequestFactory::fromGlobals(); $controller = new DemoController(); $view = Dispatch::create($controller, __DIR__ . '/views') ->handle($request); $view->render();
Dispatch 用于会话管理和CSRF令牌检查。
要执行的控制器的名称由以下之一确定。
- 从HTTP方法名称。
- 从GET/POST中的“act”值,调用
onMethod。
如果你正常访问网站,将调用 onGet。如果你通过表单提交,将调用 onPost。
视图文件
在示例代码中,“__DIR__ . '/views'”是视图目录。
在此目录中创建“user.php”。
use WScore\Pages\View\Data; /** @var Data $_view */ $user = $_view->get('user'); ?> <! -- show user -->
$this是从控制器Dispatch(PaveView)返回的对象。$view是一个包含绘制参数(Data)的对象。
其他功能
CSRF令牌。
从$view对象输出CSRF令牌。
use WScore\Pages\View\Data; /** @var Data $_view */ echo $_view->makeCsRfToken();
在提交时,检查CSRF令牌。如果检查失败,将导致关键错误。
关键错误。
这是针对 PageView 的一个特殊错误。
use WScore\Pages\PageView; /** @var PageView $view */ if ($view->isCritical()) { $view->setRender('critical.php'); } $view->render();
- 如果在执行控制器时捕获到异常,它将是一个关键错误。
消息和刷新
你可以在控制器的 message 和 error 中指定消息。
use WScore\Pages\AbstractController; class MsgController extends AbstractController { public function onGet() { $this->message('please try this demo!'); $this->error('maybe not!'); return $this->render('message.php'); } }
在视图PHP中,你可以显示消息,如下所示;
use WScore\Pages\PageView; /** @var PageView $view */ echo $view->alert();
闪存消息
use WScore\Pages\AbstractController; class MsgController extends AbstractController { public function onGet() { $this->flashMessage('thank you!'); $this->flashError('sorry!'); return $this->location('example.php'); } }
使用与消息相同的PHP代码进行显示。
XSS防护
t.b.w.
HTML表单
t.b.w
致谢
README.md 通过www.DeepL.com/Translator(免费版本)翻译。
然后由我进行了一些修正。