如何创建一个始终在变化的全局变量?
我希望在protected $global_data;
controller
中创建类似Global_data.php
的内容,可由许多控制器调用,并在$global_data
时返回变量controller
值} $this->load->library('../controllers/Global_data')
。
但是当我试图调用它时,它会给我出现此错误Unable to locate the specified class: Session.php
,所以我认为CodeIgniter 3.1.8
不允许我这样做。
那么如何实现我所寻找的目标呢?我是否需要将其放在model
上,而不是library
个文件,还是有其他方法可以执行此操作?
谢谢。
以下是Global_data.php
内容
protected $global_data;
public function __construct()
{
parent::__construct();
$this->global_data = array(
'can_be_anything' => 'can_be_anything',
'can_be_anything' => 'can_be_anything',
'can_be_anything' => 'can_be_anything',
'can_be_anything' => 'can_be_anything',
);
}
Can_be_anything_controller.php
内容
class Can_be_anything_controller extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->library('../controllers/Global_data');
}
public function index()
{
$data = $this->global_data;
$data['page_title'] = 'Dashboard';
$data['page_directory'] = 'pages/dashboard';
$this->load->view('template', $data);
}
}
答案 0 :(得分:3)
您可以在<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_margin="10dp"
android:layout_alignParentBottom="true"
android:orientation="horizontal"
android:weightSum="1">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableTop="@drawable/ic_message"
android:gravity="center"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:textStyle="bold"
android:textColor="#FFFFFF"
android:background="#24edf1"
android:text="Message" />
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight=".7"
android:padding="5dp"
android:textStyle="bold"
android:textColor="#24edf1"
android:background="#dedbdb"
android:gravity="center"
android:text="BUY" />
</LinearLayout>
目录
libraries
档案
Global_data.php
现在您可以在任何控制器中加载它,例如
class Global_data{
public $global_data;
protected $CI;
public function __construct() {
$this->CI = & get_instance();
}
public function common_data()
{
$this->global_data= array(
'can_be_anything' => 'can_be_anything',
'can_be_anything' => 'can_be_anything',
'can_be_anything' => 'can_be_anything',
'can_be_anything' => 'can_be_anything',
);
return $this->global_data;
}
public function any_method(){
$query = $this->CI->db->get('table_name');
}
}
然后使用数据
$this->load->library('Global_data')
您也可以使用$data = $this->Global_data->common_data();
模型在任何控制器中使用任何方法
https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc
答案 1 :(得分:2)
在MY_Controller
application/core/MY_Controller.php
class MY_Controller extends CI_Controller {
public $global_data;
public function __construct() {
parent::__construct();
$this->global_data = 'whateveryouwant';
}
public function somemethod() {
return '123';
}
}
然后application/controllers
中需要访问global_data
的任何其他控制器应该像这样扩展它:
class Somecontroller extends MY_Controller {
public function index() {
echo $this->global_data;
echo $this->somemethod(); // works with methods too
}
}
如果您需要运行更复杂的代码,只需将所有内容放入库或模型中并自动加载即可。所有public
方法和属性都是全局可用的。 HMVC对你想要的东西来说似乎有些过分。
答案 2 :(得分:2)
配置文件也可以非常好地处理这种数据。
/application/config/global_data.php
<php
$config['foo'] = "some foo";
$config['bar'] = 42;
$config['baz'] = array('one', 'two', 'three');
在控制器中使用
加载配置文件$this->config->load('global_data');
使用
访问项目echo $this->config->item('foo');
echo $this->config->item('bar') * 2; //outputs 84
$data = $this->config->item('baz');