felixdorn / flash
适用于PHP 7.3+ 的框架无关的闪光通知
3.0.0
2022-01-27 08:16 UTC
Requires
- php: ^8
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.5
- pestphp/pest: ^1.21.1
- phpstan/phpstan: ^1.4
README
闪光
- 可扩展的
- 完全测试并易于测试
- 允许功能使用
- 支持模板
入门指南
composer require felixdorn/flash
在开始使用 Flash
之前,您需要一个实现 Driver 的驱动程序和模板。
use Felix\Flash\Drivers\SessionDriver; use Felix\Flash\Flash; use Felix\Flash\Templates\SpectreTemplate; $driver = new SessionDriver([ // session_start options // see https://php.ac.cn/manual/fr/function.session-start.php ]); // A random template $template = new SpectreTemplate(); $flash = new Flash($driver, $template);
用法
以下是一些与闪光交互的常见示例。
在这些示例中,我假设您已经完成设置并且有一个正在运行的 Flash 实例。
闪光
$flash->success('message'); $flash->warning('message'); $flash->error('message'); $flash->info('message'); $flash->flash('type', 'message');
渲染
$flash->success('message'); $flash->warning('message1'); $flash->render(); // implicitly it's $flash->render('all') // render 'message' and 'message1' using the defined template $flash->render('success'); // render 'message' but not 'message1'
自定义类型
$flash->message('really-important', 'In movie gone in 60 seconds, things are gone in 60 seconds'); $flash->render(); // will also render `really-important` as a normal type. $flash->render('really-important'); // will render `really-important` flashes using the default template
清除消息
$flash->success('Cool!'); $flash->clear('success'); // delete every success flash using the Driver $flash->render(); // Won't render anything $flash->success('Cool!'); $flash->error('Uhhhh.'); $flash->clear(); // Clear every flashes $flash->render(); // Won't render anything
启用 & 禁用
$flash->error('Bad thing.'); $flash->disable(); // NOTE: Here, when disabling, you can still clear or render $flash->success('Good thing'); $flash->enable(); $flash->render('all'); // 'all' is optional, it's the default value // Here, only 'Bad thing.' will be rendered.
驱动程序
只有2个,但很容易实现一个新的(PR 受欢迎 :p)。
- ArrayDriver 驱动程序,应仅用于测试目的。
- SessionDriver 驱动程序与 PHP 中最常用的会话实现一起工作。
让我们深入了解它们的功能以及它们是如何工作的。这部分对于您想要创建自己的驱动程序很有用,否则请跳转到 下一节。
驱动程序必须实现以下3个方法
- clear(): self
- push(FlashData $data): self
- all(string $type = 'all'): array
clear方法
这是一个简单的例子。它应该清除任何推入的闪光。
push方法
这个方法接收一个包含闪光类型和值的 FlashData,并将其注册以便能够检索。
all方法
如果 $type = 'all'
,则此方法应返回格式如下推入的每个闪光:
return [ '{someType}' => [ 'someFlash' // ... ], // ... ];
如果 $type
是其他内容,则应返回一个只包含此类型闪光的数组。
return [ 'someFlash' ];
模板
TestableTemplate 只返回
{type}: {value}
,因此更容易测试闪光是否正常工作,而不是输入所有无聊的 HTML。
注册模板
$flash->setTemplate(...);
您也可以在构建 Flash 对象时设置它
使用字符串的模板
这是一个最基础的,但也是最有用的。
<div class="alert {type}">{flash}</div>
因此,如果您推送了一个成功的“Hello!” 闪光。它将输出
<div class="alert success">Hello!</div>
使用可调用的模板
function (string $type, string $message): string { return sprintf('<div class="alert %s">%s</div>', $type, $message); }
在这种情况下,您不需要可调用的,您可以使用基于字符串的模板,但这是它的工作方式。
使用 TemplateInterface 的模板
use Felix\Flash\Templates\TemplateInterface; class MyTemplate implements TemplateInterface { public function toHtml(string $type,string $message){ return sprintf('<div class="alert %s">%s</div>', $type, $message); } }
在这种情况下,您不需要 Template 类,您可以直接使用基于字符串的模板,但这是它的工作方式。
测试
composer test
安全
如果您发现任何与安全相关的问题,请通过电子邮件 github@felixdorn.fr 报告,而不是使用问题跟踪器。