PHP方法链接混乱

Jos*_*oon 0 php

我最近被介绍过方法链,我不确定我在这里做的是非法的,或者我做错了.我有一个数据库类,如:

    class Database
    {
    private $connection;
    private $resultset, $last_query, $current_row;

    function __construct()
    {
        $this->connect();
    }

    public function connect()
    {
        // Connect to the database
    }

    public function query($query)
    {
        $this->last_query = $query;
        $this->resultset = mysql_query($query, $this->connection);
    }

    public function fetchObject()
    {
        $this->current_row = mysql_fetch_object($this->resultset);
        return $this->current_row;
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用它像:

$db->query("SELECT * FROM users WHERE name='JimmyP'")->fetchObject();
Run Code Online (Sandbox Code Playgroud)

我也试过了

$db->fetchObject()->query("SELECT * FROM users WHERE name='JimmyP'");
Run Code Online (Sandbox Code Playgroud)

但我得到错误:"在非对象上调用成员函数fetchObject()"

有人可以向我解释我在这里做错了什么,因为它与使用方法链接有关.谢谢.

Ben*_*Ben 5

query(),你需要返回,$this否则没有什么可以在函数返回时链接它

public function query($query)
{
   $this->last_query = $query;
   $this->resultset = mysql_query($query, $this->connection);
   return $this;  // <- here
}
Run Code Online (Sandbox Code Playgroud)