Php 将公共变量添加到所有CI#U控制器';s和任何扩展它们的东西?
嗨,我想在所有CI_控制器实例中添加一个公共变量($this->data[]),这样我就可以存储一些输出页面的基本规则(css/js等),然后让每个控制器附加到这个数组中以添加自己的需求(更多css/js)。我有一个具有自定义视图函数的核心库,这些函数接受这些数组并将它们注入页面模板的head标记中 我想到的选择Php 将公共变量添加到所有CI#U控制器';s和任何扩展它们的东西?,php,codeigniter,Php,Codeigniter,嗨,我想在所有CI_控制器实例中添加一个公共变量($this->data[]),这样我就可以存储一些输出页面的基本规则(css/js等),然后让每个控制器附加到这个数组中以添加自己的需求(更多css/js)。我有一个具有自定义视图函数的核心库,这些函数接受这些数组并将它们注入页面模板的head标记中 我想到的选择 编辑CI_控制器并将其添加到那里。。。我猜这不是个好主意 创建一个扩展CI_控制器的shell控制器,将var添加到该控制器中,然后让其他每个控制器扩展shell控制器 还有其他聪明的
[edit]使用PHP5.3.x[/edit]我认为使用traits可以很容易地实现您的目标。请点击此处: 更具体地说->示例#11定义属性
唯一的限制是它的PHP5.4+我认为使用traits可以很容易地实现您想要的。请点击此处: 更具体地说->示例#11定义属性 唯一的限制是它是PHP5.4+ 您可以扩展
CI\u控制器
,以获得所需的功能
application/core/MY_Controller.php:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Controller extends CI_Controller {
public function __construct()
{
parent::__construct();
}
public function my_function()
{
return "Cool return from my_function";
}
}
您可以扩展CI\u控制器
,以获得所需的功能
application/core/MY_Controller.php:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Controller extends CI_Controller {
public function __construct()
{
parent::__construct();
}
public function my_function()
{
return "Cool return from my_function";
}
}
您可以创建自己的基本控制器文件,从in\application\core\MY_controller.php继承基本页面加载方法,如下所示:
<?php defined('BASEPATH') OR exit('No direct script access allowed');
class MY_Controller extends CI_Controller {
public function __construct()
{
parent::__construct();
}
protected function loadPage($path, $data = array())
{
$this->load->view('common/head'); // Assuming you will use a folder for page parts
$this->load->view($path, $data);
$this->load->view('common/foot');
}
}
您可以创建自己的基本控制器文件,从in\application\core\MY_controller.php继承基本页面加载方法,如下所示:
<?php defined('BASEPATH') OR exit('No direct script access allowed');
class MY_Controller extends CI_Controller {
public function __construct()
{
parent::__construct();
}
protected function loadPage($path, $data = array())
{
$this->load->view('common/head'); // Assuming you will use a folder for page parts
$this->load->view($path, $data);
$this->load->view('common/foot');
}
}
答案非常简洁,但不幸的是我被锁定在5.3.x。我会更新我的问题。无论如何谢谢你!非常简洁的回答,但不幸的是我被锁定在5.3.x。我会更新我的问题。无论如何谢谢你!好东西!欣赏伟大的东西!感激