2

我正在尝试创建一个新对象并将创建者作为构造函数中的参数传递。

    public function update_user_score(&$response){
      $user_id          = $_POST['user_id'];
      $score_details        = $_POST['score_details'];
      require_once 'Score_manager.php';
      $score_manager = new Score_manager($this);
      $score_manager->update_user_score($user_id, $score_details);
      $response['success']  = 1;
      $response['new_score']    = $new_score;
      return;
    }

在 Score_manager 中,构造函数是:

// constructor
function __construct($mfunc_helper) {
    require_once 'DB_Connect.php';
    // connecting to database
    $this->db = new DB_Connect();
    $this->db->connect();
    $this->$func_helper = $mfunc_helper;
}

一旦我到达 $this->$func_helper = $mfunc_helper; 我收到下一个错误“未定义的变量:func_helper ...”。我试图用 & 传递 $this,但我得到“致命错误:调用时传递引用已被删除......”。我究竟做错了什么 ?

4

2 回答 2

3

$this->$func_helper应该是$this->func_helper。您不需要$属性名称前面的额外内容。我个人认为这是非常不一致的语法,但事实就是如此。:(

您得到的错误是因为 PHP 正在搜索一个名为$func_helper. 它想使用该变量的值来查找 的属性名称$this。因此,实际上您还没有编写属性,而是读取了不存在的局部变量。因此,您会收到此错误。

于 2013-07-20T08:38:30.397 回答
1

$this->func_helper您必须使用非 $this->$func_helper访问类属性。但是您的"Fatal error: Call-time pass-by-reference has been removed"错误发生在不同的情况下。

于 2013-07-20T08:44:19.873 回答