Codeigniter 3:如何避免在控制器中重复这段代码?

时间:2019-04-07 07:46:10

标签: php codeigniter codeigniter-3

我正在使用Codeigniter 3.1.8和Bootstrap 4中的基本博客应用

所有控制器(Login.php和Register.php除外)中存在几个实体:静态数据,类别和页面。

    train_op = tf.train.AdamOptimizer(learning_rate=lr).minimize(loss)

此外,在大多数控制器中,以上代码出现的次数不止一次。

恐怕这是应用程序中唯一重复代码的情况。 (请查看整个应用程序,其当前状态为 on my Github account )。

我正在寻找经验丰富的PHP开发人员的特定和/或一般建议,这些建议将有助于我减少代码冗余并提高效率。

避免在控制器中重复上面代码的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

在CodeIgniter中,您可以在以下路径中创建核心控制器:

application/core/MY_Controller.php

然后,您可以使用它来扩展控制器,例如:

class MY_Controller extends CI_Controller {
    public function __construct() {
         // your logic here
    }
}

class Pages extends MY_Controller {
    public function index() {
          // display all pages here
    }
}

除非您需要或重写某些内容,否则不必在每个类中都创建构造函数;如果要获取全局数据,只需在核心控制器中创建一个受保护的属性并在其他类中使用它

例如:

// MY_Controller
protected $data;

public function __construct() {
    $this->data = $this->somemodel->get_static()
}

在您的控制器中,您可以执行以下操作

public function index() {
   $this->data['pages'] = $this->pagesmodel->get_pages();
   $this->load->view('path/to/view', $this->data);
}

核心控制器(如果存在)会自动加载,只需创建文件并开始使用它即可。