在codeigniter中声明类级变量
我是CI新手,我想做的是拥有一个类级变量(例如数组)。但似乎CI,尽管自吹自擂,不支持这个功能。《用户指南》中没有提及这方面的内容。有一个标题叫做私有函数和变量,但文本似乎对变量保持沉默 我想要一些像:在codeigniter中声明类级变量,codeigniter,variables,declaration,Codeigniter,Variables,Declaration,我是CI新手,我想做的是拥有一个类级变量(例如数组)。但似乎CI,尽管自吹自擂,不支持这个功能。《用户指南》中没有提及这方面的内容。有一个标题叫做私有函数和变量,但文本似乎对变量保持沉默 我想要一些像: class OrderStats extends CI_Controller { protected $arr_CoreCountry = ('0'=>'uk', '1'=>'us'); public function __construct() { p
class OrderStats extends CI_Controller {
protected $arr_CoreCountry = ('0'=>'uk', '1'=>'us');
public function __construct()
{
parent::__construct();
// Your own constructor code
}
public function index()
{
$this->load->model('orders', '', TRUE);
//$data['result'] = $this->Testmodel->get_entries();
$data['result'] = $this->Testmodel->get_reports();
$this->load->view('test', $data);
}
public function getOrderStats()
{
$this->load->model('Orderstatsmodel', '', TRUE);
//$data['result'] = $this->Testmodel->get_entries();
foreach ($arr_CoreCountry as $key => $value)
{
$data['result'] = $this->Orderstatsmodel->get_orderStats($key);
}
// $data['result'] = $this->Orderstatsmodel->get_orderStats(0);
$this->load->view('orderstats', $data);
}
请记住,当我在本文中的位置声明$arr_CoreCountry变量时,我经常看到语法错误消息。
当然,当我把它放在任何函数的某个地方时,它超出了范围,我不断得到一个错误消息,$arr_corecontry是一个未定义的变量。
所以问题是我该在哪里定义它
期待快速响应,因为codeigniter的这篇文章浪费了我半天的时间。您有一个语法数组声明错误。请尝试这样声明数组:
protected $arr_CoreCountry = array('0'=>'uk', '1'=>'us');
请查看此网站了解数组手册:您有语法数组声明错误。请尝试这样声明数组:
protected $arr_CoreCountry = array('0'=>'uk', '1'=>'us');
请查看此网站了解阵列手册:这应该可以:
类OrderStats扩展CI_控制器{
protected $arr_CoreCountry = array('0'=>'uk', '1'=>'us');
public function getOrderStats()
{
$this->load->model('Orderstatsmodel', '', TRUE);
//$data['result'] = $this->Testmodel->get_entries();
foreach ($this->arr_CoreCountry as $key => $value)
// etc
}
您在原始代码中省略了$this->
编辑
这是我的测试代码~
class Testing extends CI_Controller {
protected $foo = array('test'=>'foo', 'bar'=>'baz');
function index() {
foreach($this->foo as $k => $v) {
echo $k . ' = ' . $v . '<br />';
}
}
}
// outputs:
test = foo
bar = baz
类测试扩展了CI_控制器{
受保护的$foo=array('test'=>'foo','bar'=>'baz');
函数索引(){
foreach($k=>v时的this->foo){
回声$k'='.$v'
;
}
}
}
//产出:
测试=foo
bar=baz
也许您可以发布您的语法错误,因为它们似乎从原始帖子中丢失了。这应该可以:
类OrderStats扩展CI_控制器{
protected $arr_CoreCountry = array('0'=>'uk', '1'=>'us');
public function getOrderStats()
{
$this->load->model('Orderstatsmodel', '', TRUE);
//$data['result'] = $this->Testmodel->get_entries();
foreach ($this->arr_CoreCountry as $key => $value)
// etc
}
您在原始代码中省略了$this->
编辑
这是我的测试代码~
class Testing extends CI_Controller {
protected $foo = array('test'=>'foo', 'bar'=>'baz');
function index() {
foreach($this->foo as $k => $v) {
echo $k . ' = ' . $v . '<br />';
}
}
}
// outputs:
test = foo
bar = baz
类测试扩展了CI_控制器{
受保护的$foo=array('test'=>'foo','bar'=>'baz');
函数索引(){
foreach($k=>v时的this->foo){
回声$k'='.$v'
;
}
}
}
//产出:
测试=foo
bar=baz
也许您可以发布您的语法错误,因为它们似乎从原始帖子中丢失了。我自己解决了这个问题 我改变了两件事
protected$arr_CoreCountry=('0'=>'uk','1'=>'us')代码>
改为
var $arr_CoreCountry = array(0=>'se', 1=>'fi',2=>'de');
foreach ($this->arr_CoreCountry as $key => $value)
及
foreach($arr\u CoreCountry as$key=>$value)
改为
var $arr_CoreCountry = array(0=>'se', 1=>'fi',2=>'de');
foreach ($this->arr_CoreCountry as $key => $value)
我丢失了这美元,但当我把它放在那里时,它仍然不起作用。当我将protected改为var时,它起了作用
谢谢大家的意见…我自己解决了这个问题
我改变了两件事
protected$arr_CoreCountry=('0'=>'uk','1'=>'us')代码>
改为
var $arr_CoreCountry = array(0=>'se', 1=>'fi',2=>'de');
foreach ($this->arr_CoreCountry as $key => $value)
及
foreach($arr\u CoreCountry as$key=>$value)
改为
var $arr_CoreCountry = array(0=>'se', 1=>'fi',2=>'de');
foreach ($this->arr_CoreCountry as $key => $value)
我丢失了这美元,但当我把它放在那里时,它仍然不起作用。当我将protected改为var时,它起了作用
谢谢大家的输入…谢谢,但很抱歉输入错误。我正在像你提到的那样声明我的数组。但是获取未定义变量$arr_corecontry错误消息。是否尝试在constants.php文件中声明该常量并在控制器中使用它?也许这对你有帮助?好啊但是类属性的概念到哪里去了呢?您需要理解,在MVC中,您并没有真正的OOP。Codeingiter中的控制器不应该有属性(显然)。他们应该只接收数据,将其发送给模型进行处理,然后将其分配给视图。这里唯一真正的OOP实现是模型(它们处理所有编程逻辑)。它们可以而且大部分应该是具有属性和方法的类(一个例子是DB中每个tabe的模型)。希望这能有所帮助……而且Codeigniter中的库也是纯OOP;)谢谢,但很抱歉是打字错误。我正在像你提到的那样声明我的数组。但是获取未定义变量$arr_corecontry错误消息。是否尝试在constants.php文件中声明该常量并在控制器中使用它?也许这对你有帮助?好啊但是类属性的概念到哪里去了呢?您需要理解,在MVC中,您并没有真正的OOP。Codeingiter中的控制器不应该有属性(显然)。他们应该只接收数据,将其发送给模型进行处理,然后将其分配给视图。这里唯一真正的OOP实现是模型(它们处理所有编程逻辑)。它们可以而且大部分应该是具有属性和方法的类(一个例子是DB中每个tabe的模型)。希望这能有所帮助……而且Codeigniter中的库也是纯OOP;)是的,我在我的帖子中忽略了这一点,因为这没有任何区别。错误仍然存在,我不同意;我刚刚测试过,除非我误解了,否则它不会有问题。事实上,它在我这边不起作用。然而,我自己解决了这个问题。我会很快发布我的答案。是的,我从我的帖子中忽略了这一点,因为这没有任何区别。错误仍然存在,我不同意;我刚刚测试过,除非我误解了,否则它不会有问题。事实上,它在我这边不起作用。然而,我自己解决了这个问题。我会很快发布我的答案。