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変数が継承を使用して値を取り、コードの重複を削減することを望んでいました。