无法将$ this作为参数传递给对象构造函数

时间:2013-07-20 08:35:50

标签: php

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

    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;我得到下一个错误“Undefined variable:func_helper ...”。我试图通过&但是我收到了“致命错误:呼叫时间传递已被删除......”。我做错了什么?

2 个答案:

答案 0 :(得分:3)

$this->$func_helper应为$this->func_helper。您不需要在属性名称前面添加额外的$。我个人认为这是非常不一致的语法,但它是如何。 :(

您遇到的错误是因为PHP正在搜索名为$func_helper的本地变量。它希望使用该变量的值来查找属性名称$this。所以实际上你还没有编写属性,而是读取不存在的局部变量。因此,你得到这个错误。

答案 1 :(得分:1)

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