PHP-THINKPHP如何处理重复代码

需求定制 需求定制 主题:1050 回复:2283

PHP-THINKPHP如何处理重复代码

归属感 发布于 2016-12-04 字数 754 浏览 1242 回复 1

问题描述:我在开发一个网站,网站头部、左侧、页脚均有独立的静态界面,用于被其他页面包含。且这三个界面内有模版变量,需要控制器方法绑定。

private function getTopLeftFoot($id){
$top = PublicAction::top();
$this->assign('id', $top['id']);
$this->assign('microname', $top['microname']);

$left = PublicAction::left($id);
$this->assign('attenCount', $left['attenCount']);
$this->assign('fansCount', $left['fansCount']);
$this->assign('user', $left['user']);
$this->assign('topics', $left['topics']);

$foot = PublicAction::footer();
$this->assign('footmessage', $foot['footmessage']);
}

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(1

偏爱自由 2017-05-26 1 楼

把你对公共模板的变量放到ACTION类中的_initialize里定义,每个控制器都是继承ACTION的,然后你每个控制器都添加:

public function _initialize()
{
//其他逻辑处理
parent::_initialize();
}

如果不想修改框架的基类Action类,你可以自己创建一个基类比如AAction,让它继承Action,代码:

class AAction extends Action {

/**
* 公共初始化
*/
public function _initialize() {
    $this->createHeader();
    $this->createLeft();
    $this->createFoot();
}

}

你自己把相应的生成头、左边、尾的代码加到相应方法里,然后每个控制器action都继承AAction,初始化方法里加上parent::_initialize();就可以了。