【问题标题】:PHP / CodeIgniter- Undefined variable in class constructPHP / CodeIgniter-类构造中的未定义变量
【发布时间】:2012-08-31 20:14:32
【问题描述】:

我有以下 php 错误:

遇到了 PHP 错误

严重性:通知

消息:未定义变量:t

遇到了 PHP 错误

严重性:警告

消息:myclass::__construct() 缺少参数 1,调用 xxx 在 1011 行 并定义

我的控制器包含:

    $this->load->model('mymodel');
    $i = $this->mymodel->func(1);
    print_r($i);

我的模型:

$test = new myclass("foo", "bar");
$myarray[] = $test;
return $myarray

我的班级:

class myclass {

var $a;
var $b;

public function __construct($t, $l) // ERROR 2
{
    $this->a = $t; // ERROR 1
    $this->b = $l;
}

}

请注意,控制器中的 print_r($a) 会打印带有内容的正确对象..

谢谢

【问题讨论】:

  • PHP 为您提供错误的行号。你为什么不发布那个代码……
  • 你说得对,我在相关行前用 // ERROR 编辑了代码。
  • 不可能。创建一些强大的 1 文件示例并将其放在 pastebin.com 上,以便我们运行它并查看问题
  • 我们看1011行的代码,$this->load->model('mymodel')是在构造myclass吗? $this->model->func(1) 是在构造 myclass 吗?如果不更全面地了解堆栈,就很难判断。

标签: php class codeigniter object arguments


【解决方案1】:

好吧,那是由 Codeigniter 引起的。

myclass 在单独的文件中声明,并由 mymodel 使用:

加载
    $CI =& get_instance();
    $CI->load->library('myclass', $params);

加载库时,Codeigniter 创建一个 myclass 实例作为单例,但它不传输任何参数。为防止出现此错误,您必须在加载 lib 之前提供参数:

    $params = array('type' => "a", 'loc' => "b");
    $CI =& get_instance();
    $CI->load->library('myclass', $params);

请注意,它必须是一个数组 ($params),而不是单个参数。

【讨论】:

    【解决方案2】:

    另一种方法是抄袭anteloveanswer

    这样,您只需要更改模型文件和加载模型的方式。

    P.S 这只是为了丰富这个 SO 线程

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-06
      • 1970-01-01
      • 2012-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多