我正在使用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开发人员的特定和/或一般建议,这些建议将有助于我减少代码冗余并提高效率。
避免在控制器中重复上面代码的最佳方法是什么?
答案 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);
}
核心控制器(如果存在)会自动加载,只需创建文件并开始使用它即可。