使用方法将mysql结果更改为“Class”?

I have seen these codes:

$result = $db->result($query);
$rows = $result->fetchAll();

how can I do similar effect? ($result contains methods?)

I think this is what you are looking for:

<?php 
class test{
    private $value = 0;

    function foo(){ 
        $this->value = 1;
        return $this; 
    } 

    function bar(){ 
        $this->value = 2;
        echo $this->value; 
    } 
} 

$test = new test(); 
$result = $test->foo(); 
$result->bar();

?>

By having the method return itself, you can chain them together in this fashion.

Strictly speaking, you're asking about OOP in PHP, in which case, this is a reasonable example:

class HasResultMethod
{
    public function result( $query )
    {
        return new HasFetchAllMethod();
    }
}

class HasFetchAllMethod 
{
     public function fetchAll(){}
}

// you have a variable with a result method that has one parameter.
$result = $db->result($query);
// that returns an object which has a fetchAll method.
$rows = $result->fetchAll();

You probably are dealing with some wrapper around PDO, a library to interface with databases. Their query methods will return a PDOStatement which has methods which will allow you to get results from the DB. result is either a typo, or it behaves in a very similar way.

I got it already. What a great hint Headspin

http://sandbox.phpcode.eu/g/147bd.php

<?php 
class foo{ 
    function bar(){ 
        return $this; 
    } 

    function fetch(){ 
        echo "yeah"; 
    } 
} 

$foo = new foo(); 
$result = $foo->bar(); 
$result->fetch();

That is easy

$db is instance of class that returnes class, so when you say $db->result($query);

$db will return object

e.g.

//this method is inside $db class
    function result($query)
    {
     $result = new Result();
     $result->rows = mysql_query...
     return $result;
    }

and when you say

$result->fetchAll();

that is method inside class Result that will fetch all rows saved inside $result->rows;

e.g.

//method inside Result class
function fetchAll()
{
   //fetch rows inside variable $this->rows
}

So basically what you can do with ORM (object relational mapping), you can return Array of objects, each object will represent one record from db

e.g.

Class User
{
  var $ID;
  var $Name;
  var $LastName;
  var $Email;
  function load($row)
  {
     $this->ID = $row["ID"];
    ... etc
   }
  function save()
  {
    $sql = "update tbl_users set Name=:Name, LastName=:LastName, Email=:Email where ID=:ID";   

   //then execute your query
   }
}

so how to get list of objects, its easy

select all records and add them into array

$ar = new Array();
for($i = 0; $i < count($rows); $i++)
 {
  $r = new User();
  $r->load($rows[$i]);
}
return $ar;

simple as that...