将代码片段加载到函数中

时间:2013-09-02 22:55:28

标签: php codeigniter

如何将片段加载到函数中以减少重复代码。

例如,如果我使用以下代码;

 public function site()
    {
        $this->load->model('model_get');
        $data["results"] = $this->model_get->getData(__FUNCTION__);
        $this->load->view('view_head', $data);
        $this->load->view('view_nav');
        $this->load->view('view_content_' . __FUNCTION__, $data);
        $this->load->view('view_footer');
    }

我怎么能把它减少到像以下那样的东西:

 public function site()
    {
        command $this->load->model('site_loader');
        //Function specific code
    }

使用site_loader.php:

        $this->load->model('model_get');
        $data["results"] = $this->model_get->getData(__FUNCTION__);
        $this->load->view('view_head', $data);
        $this->load->view('view_nav');
        $this->load->view('view_content_' . __FUNCTION__, $data);
        $this->load->view('view_footer');

基于totymedli建议的工作代码。

 Controller
 public function site()
    {
        $pagename = __FUNCTION__;
        include 'resources/scripts/site_loader.php';
    }

 Site Loader
 <?php
        $this->load->model('model_get');
        $data["results"] = $this->model_get->getData($pagename);
        $this->load->view('view_head', $data);
        $this->load->view('view_nav');
        $this->load->view('view_content_' . $pagename, $data);
        $this->load->view('view_footer');
 ?>

1 个答案:

答案 0 :(得分:-1)

如果您真的想这样做,可以将该代码复制到PHP文件,而不是您需要的include文件。手册中有趣的部分:

  

当包含文件时,它包含的代码将继承发生包含的行的变量范围。从那时起,调用文件中该行可用的任何变量都将在被调用文件中可用。但是,包含文件中定义的所有函数和类都具有全局范围。

您要包含的代码:

<?php
//site_loader.php
$this->load->model('model_get');
$data["results"] = $this->model_get->getData(__FUNCTION__);
$this->load->view('view_head', $data);
$this->load->view('view_nav');
$this->load->view('view_content_' . __FUNCTION__, $data);
$this->load->view('view_footer');
?>

控制器:

public function site()
{
   include 'site_loader.php';
}

注意:还有requirerequire_onceinclude_once。选择最适合您项目的那个。 Help for the choice