0

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

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

 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');
 ?>
4

1 回答 1

-1

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

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

您要包含的代码:

<?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。选择最适合您的项目的一个。帮助选择

于 2013-09-02T23:03:23.060 回答