class Users
{
function inWork($uid)
{
$q = 'SELECT in_work FROM user_activity WHERE user_id=? LIMIT 1';
$stmt = $this->pdo->prepare($q);
$params = array($uid);
$count = $stmt->execute($params);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if($row['in_work'] == 0){
$status = 'Not Working';
} elseif($row['in_work'] == 1){
$status = 'Working';
}
return $status;
}
}
和
class Call_log extends Users
{
function getUserCalls($uid)
{
print $this->inWork($uid);
}
}
和
$call_log = new Call_log;
print $call_log->inWork(n);
从客户端代码中,工作和行为正确,即根据数据库中的整数值相应地显示“工作”或“不工作”。
从内部调用相同的方法Call_log
,它不能正常工作,或者我得到意外的结果。
该方法仅输出“不工作”?
我的 Call_log 类继承了用户的所有方法,所以inWork($uid)
从内部调用getUserCalls($uid)
应该不是问题吗?或者至少我是这么认为的。
背景:
SELECT in_work FROM user_activity WHERE user_id=32 LIMIT 1;
+---------+
| in_work |
+---------+
| 1 |
+---------+
SELECT in_work FROM user_activity WHERE user_id=2 LIMIT 1;
+---------+
| in_work |
+---------+
| 0 |
+---------+
编辑:长版:
function getUserCalls($uid){
$stmt = $this->pdo->prepare("CALL select_calls_by_extn(?)");
$stmt->bindParam(1, $uid, PDO::PARAM_INT, 5);
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$stmt->execute();
$rows = $stmt->fetchAll();
if(!$rows){
throw new Exception('We couldn\'t find any records for that name.');
}
foreach ($rows as $row){
if($row['in_work'] == 0){
$status = 'Not Working';
} elseif($row['in_work'] == 1){
$status = 'Working';
}
//$status = $this->inWork($uid);
print '<tr><td>'.$row['ext_num'].'</td><td>'.$row['username'].'</td><td>'.$status.'</td><td>'.$row['avg_in'].'</td><td>'.$row['avg_out'].'</td><td>'.$row['calls_in'].'</td><td>'.$row['calls_out']."</td></tr>\n";
}
}
我希望“注释掉”的 $status 变量会使用继承来取值,从而减少代码重复。