方法不返回正确的值

时间:2014-06-27 16:00:47

标签: php oop

我一整天都在解决这个问题,我无法弄清楚为什么我的代码表现得像这样。我正在使用PDO从数据库中获取数据,当我var_dump $stmt->fetchAll()时,我得到了预期的结果(一个包含2个对象的数组),但是当我调用该方法时,我var_dump result是调用方法的对象。

用户类派生自ORM类

代码如下:

在index.php中 User::find(1);


在ORM.php中

protected static $table_name;
private $query;

public function __construct()
{
  $this->query = new Query(static::$table_name);
}


public static function find($id, $columns = "*")
{
  $user = User::get($columns, get_called_class(), PDO::FETCH_CLASS);
  return $user;
}

public static function findAll($columns = "*")
{
  return User::get($columns);
}

/**
 * Magic method to call methods
 */
public function __call($method, $args = array())
{
call_user_func_array( array( $this->query, $method ), $args);
return $this;
}

/**
 * Magic method to call static methods
 */
public static function __callStatic($method, $args = array())
{
  $static = new static;
  call_user_func_array( array( $static->query, $method ), $args);
  return $static;

}


并在Query.php中

 public function get($columns = "*", $class_name = "", $fetch_mode = PDO::FETCH_ASSOC)      
{
   $stm = DB::prepare("select * from user");//the DB class is working properly
   $stm->execute();
   $fetch = $stm->fetchAll();
   var_dump($fetch); // This prints the correct array with 2 users in it
   return $fetch; // doesnt return somehow

}

先谢谢,我不知道如何解决这个问题,因为我已经整整一天都在看这个问题了

1 个答案:

答案 0 :(得分:1)

罗伯特

User::find(1);

find($id, $columns = "*")
{
  $user = User::get($columns, get_called_class(), PDO::FETCH_CLASS);
  return $user;

在你的电话中发现你正在传递1,我猜是$id,但是在你得到的$columns中,这对我来说意味着你没有通过$id

总而言之,对我来说,看起来你传递了1但却没有做任何事情吗?

让我知道这是否可以修复它?