0

Web 開発プロジェクトで PHP チェーン メソッドを実装しようとしています。しかし、私はそれを正しく理解できないようです。

class foo extends base{


    public $query = null;
    public $item = array();

    public function __construct($connection){
        parent::__construct($connection);

    }

    public function select($query){
         $this->query = $query;
         return $this;
    }

    public function where($query){
         $this->query = $query;
         return $this;
    }

    public function __toString()
    {
        $this->item = $this->connection->fetch_assoc($this->query);

        return var_export($this->item, true);
    }


}

$connection = new db($dsn = 'mysql:host=localhost;dbname=xxx',$username = 'xxx',$password = 'xxx');
$foo = new foo($connection);

$select = $foo->select("SELECT * FROM page")->where("page_id = 10 ");
print_r($select->item);

私が得た結果、

Array
(
)

しかし、私はデータの行を取得する必要があります。普段はこんな感じでやってますが、

class boo extends base{

    ...

    public function select() {

        $sql = "
            SELECT * 
            FROM page
            WHERE page_id = ?
        ";

        $item = $connection->fetch_assoc($sql,array(1));
        return $item;

    }
}

連鎖メソッドで何が欠けていましたか?

編集:

class base
{
    protected $connection = null;

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

    }


}

印刷するだけなら$select

print_r($select);

結果、

foo Object
(
    [query] => where page_id = 10 
    [item] => Array
        (
        )

    [connection:protected] => db Object
        (
            [connection] => PDO Object
                (
                )

            [dsn] => mysql:host=localhost;dbname=xxx
            [username] => xxx
            [password] => xxx
        )

)
4

2 に答える 2

0

のようにしてみてください

$select = $foo->select('*')->from('page')->where('page_id','10');
print_r($select);
于 2013-08-24T07:36:44.947 に答える
0

foo次の呼び出しでは、クラスの$queryメンバー変数の値を設定して置き換えるだけです。

$select = $foo->select("SELECT * FROM page")->where("page_id = 10 ");

したがって、メンバー変数$foo->select("SELECT * FROM page")の値を設定し、その値を置き換えます。 $query->where("page_id = 10 ")

また、クエリを実行していません。

于 2013-08-24T07:40:24.430 に答える