PHP-THINKPHP如何处理重复代码
问题描述:我在开发一个网站,网站头部、左侧、页脚均有独立的静态界面,用于被其他页面包含。且这三个界面内有模版变量,需要控制器方法绑定。
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']);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(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();就可以了。