【发布时间】:2018-10-31 15:40:48
【问题描述】:
我想知道这个奇怪的事情:
public function getAllCustomers()
{
$customers = $this->redis->keys("customer:*");
foreach ($customers as $value) {
return new \Customer($this->redis->hget($value,"name"),$this->redis->hget($value,"id"),$this->redis->hget($value,"email"));
}
}
此方法从我的数据库中返回所有客户。
但如果我尝试遍历所有这些客户:
foreach ($customerController->getAllCustomers() as $customer) {
var_dump($customer);
}
找不到getName() 方法。 var_dump 返回:
NULL
NULL
NULL
客户类别:
class Customer {
var $name;
var $id;
var $email;
function __construct($name, $id,$email) {
$this->name = $name;
$this->id = $id;
$this->email = $email;
}
/**
* @return mixed
*/
public function getName()
{
return $this->name;
}
/**
* @return mixed
*/
public function getId()
{
return $this->id;
}
/**
* @return mixed
*/
public function getEmail()
{
return $this->email;
}
public function __toString()
{
return "";
}
}
我对@987654326@ 很陌生,不明白为什么我无法访问 Customer 对象的字段。
【问题讨论】:
-
您能否在 for 循环中的
$customer上添加var_dump或print_r? -
您在 foreach 循环中返回。所以这个循环只会运行一次
-
你返回的是一个数组而不是一个对象
-
return array(\Customer(...- 您是否还在这里缺少new?您发布的代码应该只会导致语法错误。 -
您仍在 foreach 循环内返回,因此只会返回一个客户