【发布时间】:2020-05-19 06:32:27
【问题描述】:
我的函数从 MySQL 查询返回一个数组,如果 MySQL 没有返回结果,返回 NULL 是否好?谢谢
class User
{
/* ... */
/**
* Return user info for specified user id
* @param int $user_id
* @return array $user
*/
public function getUser(int $user_id): ?array {
$query = $this->_db->prepare('SELECT * FROM users WHERE id = :user_id LIMIT 1');
$query->execute(array(':user_id' => $user_id));
$user = $query->fetch(PDO::FETCH_ASSOC);
if ( is_array($user) && !empty($user) ) {
return $user;
}
return null;
}
/* ... */
}
更新:看完上面的链接,最后我会这样做。
class User
{
/* ... */
/**
* Return user info for specified user id
* @param int $user_id
* @return array $user
*/
public function getUser(int $user_id): array {
$user = array();
$query = $this->_db->prepare('SELECT * FROM users WHERE id = :user_id LIMIT 1');
$query->execute(array(':user_id' => $user_id));
$result = $query->fetch(PDO::FETCH_ASSOC);
if ( is_array($result) && !empty($result) ) {
foreach( $result as $key => $value ) {
$user[$key] = $value;
}
}
return $user;
}
/* ... */
}
【问题讨论】:
-
不确定是否有(单一)好的方法可以做到这一点(尽管有不好的方法)。有些人更喜欢返回 false,在类中的方法的情况下,设置类中的字段而不是将数据返回给调用者会更常见。
-
正如@NigelRen 所说,将结果设置为类属性并从外部访问它们更为常见。你可以有一个属性
public $user;,当你初始化一个类的对象时,你可以很容易地调用方法,然后访问属性$user -
一次最多只能返回一个用户;返回一个用户的数组似乎非常奇怪。