方法名必须是字符串,PHP中的错误

时间:2014-05-16 14:16:36

标签: php class oop methods mysqli

这是我的代码,

class Tasks {
    public $parent;

    public function __construct($parent) {
        $this->parent = $parent;
    }

    public function get_task($parent) {
        return mysqli_query($db, "SELECT task, status, created_at FROM tasks WHERE parent IS '$parent' AND user='$user_id'");
    }
}

$project = new Tasks("NULL");

print "<div class='project'>" . $project->$get_task() . "</div>";

我希望这应该通过&#34; NULL&#34;进入mysql_query并返回结果。但是我得到了错误,

Fatal error: Method name must be a string

更新:为了解决这个问题,我只是没有制作该类的实例。相反,我将我想要的值传递给函数,如Tasks::get_task(value-here)

2 个答案:

答案 0 :(得分:5)

替换

print "<div class='project'>" . $project->$get_task() . "</div>";

print "<div class='project'>" . $project->get_task() . "</div>";

(删除$符号)。

答案 1 :(得分:1)

$project->$get_task()
          ^--

这是PHP的一个功能,您可以执行以下操作:

$method = "get_task";
$project->$method();

由于代码中$get_tasknull,因此您获得Fatal error: Method name must be a string