archost / acore
Archost UI 工具包。
Requires
- younishd/endobox: ^1.0.0
This package is not auto-updated.
Last update: 2017-11-23 23:10:55 UTC
README
Archost UI 工具包。
安装
git clone https://github.com/archost/acore.git
cd acore
composer install
git clone https://github.com/archost/alicht.git /tmp/alicht
cp -r /tmp/alicht/{css,js} public/
使用方法
创建页面
要创建一个页面,只需扩展 Page 基类并实现其 preload() 方法。
<?php
require __DIR__ . '/../vendor/autoload.php';
use \archost\acore\Page;
use \archost\acore\ActionQueue;
class AmazingPage extends Page {
protected function preload()
{
}
}
$p = AmazingPage::instance();
echo $p->display();
以下代码将显示一个空白的 alicht 风格页面。
操作
每个非平凡页面可能都有一些控制其行为的 操作。操作由用户输入触发,并通过一个简单的键(例如,comment,login)识别。
操作处理器
操作处理器 是具体页面类中响应给定操作的方法。这些操作处理器在 preload() 中注册,以便页面知道如何响应给定操作。
protected function preload()
{
$this->register_action_handler('day', [$this, 'on_day']);
$this->register_action_handler('night', [$this, 'on_night']);
}
如您所见,我们使用了 register_action_handler() 方法来注册操作处理器。第一个参数是 操作键,第二个参数是一个 可调用 对象。
好吧,让我们在我们的 AmazingPage 中实现这些操作处理器。
public function on_day()
{
$this->alert_success('Good day!');
}
public function on_night()
{
$this->alert_success('Good night!');
}
alert_success()在页面的顶部打印一个漂亮的绿色通知。请参阅 页面 API 以获取可用方法的完整列表。
此外,请注意,在显示页面时可能有一个整个操作队列等待处理。换句话说,您确实想确保在多个操作的情况下,操作处理器不会相互干扰。(您可能还想考虑 有限状态机 等此类事物。这里不深入讨论。)
操作队列
页面有一个 FIFO 操作队列,用于跟踪挂起的操作。显然,每个页面都处理自己的操作队列。实际上,Page 构造函数需要一个 ActionQueue 实例。
现在,让我们在我们的队列中推送一些操作!
$p->push_action('day');
$p->push_action('foobar');
灯光亮了!
echo $p->display();
幕后会发生什么?
首先,队列中将填充操作 day 和 foobar。
接下来,display() 方法将调用每个操作关联的操作处理器(如果有的话)。在我们的例子中,只有 day 有一个(即 on_day()),而 foobar 将被忽略。
因此,我们的页面将显示一个漂亮的 "Good day!" 消息。
页面 API
display()
显示页面。
push_action( $action )
将操作推送到操作队列。这应该在某个事件发生时由某些调度器自动调用。我们不会定义(因此限制)事件可能是什么。这取决于您!
dump( $key [, $value = null] )
将任意数据按原样导入受保护的关联数组 $dump,以避免在不需要特殊处理时编写大量冗余的setter代码。
您可以选择传递一个键值对或一个数据数组(并省略value参数)。
preload()
当您扩展Page类时,必须始终实现此回调方法。当您调用display()页面时,它将自动被调用。
这是注册动作处理器的正确位置。
这也是您想要做一些全局事情的地方,比如设置页面标题。(见set_title。)
register_action_handler( $action, $handler )
注册动作处理器。
此方法将动作映射到动作处理器,每当触发动作时都会调用该处理器。(见push_action。)
示例代码
protected function preload()
{
$this->register_action_handler('explosion', [$this, 'on_explosion']);
}
注意如何使用$this和函数名将可调用方法作为数组传递。
set_title( $title )
设置页面的HTML标题。
set_meta_description( $desc )
设置页面的元描述文本。
css( $css_file )
将CSS文件添加到HTML头部。
cover( $cover_file )
添加封面图像。
框获取器
以下方法允许您访问构建页面的框。
document()
此获取器代表整个文档。您应该在这里追加大部分内容。
logo()
用于设置logo模板。这通常是页面的左上角,位于页眉内。
nav()
用于在页眉内添加漂亮的导航。
警告
以下方法允许您在文档框上方显示漂亮的警告消息。
alert_success( $msg )alert_warning( $msg )alert_error( $msg )alert_info( $msg )
示例
在public/中有示例代码。您应该得到类似这样的结果
依赖关系
贡献者
许可
acore是开源软件,许可协议为MIT许可。

