PHP-THINKPHP如何处理重复代码

发布于 2016-12-04 09:05:53 字数 687 浏览 1436 评论 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']);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

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

评论(1

偏爱自由 2017-05-26 19:06:17

把你对公共模板的变量放到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();就可以了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文