场景:
控制器中的一个方法,我们根据不同的配置,让返回的数据以json格式显示,或者直接输出到模板。
装饰器核心代码:
Template.php
protected $controller;
function beforeRequest($controller)
{
$this->controller = $controller;
}
function afterRequest($return_value)
{
if ($_GET['app'] == 'html') {
foreach ($return_value as $k => $v)
{
$this->controller->assign($k, $v);
}
$this->controller->display();
return;
}
}
Json.php
protected $controller;
function beforeRequest($controller)
{
$this->controller = $controller;
}
function afterRequest($return_value)
{
if ($_GET['app'] == 'json') {
return json_encode($return_value);
}
}
实现代码:
class Home extends Controller
{
function index()
{
$model = Factory::getModel('User');
$userid = $model->create(['name' => '张三', 'phone' => '15998589988']);
return ['user_id' => $userid, 'name' => '王哈哈'];
}
}