抽象類定義
abstract class PostParent {
protected $querySQL;
public $fetchResult;
public $timeAgo;
abstract protected function buildHTML(); // 強制子類實作
public function getSQL() { return $this->querySQL; }
public function fetchResult($resource) {
$this->fetchResult = mysql_fetch_assoc($resource);
}
}
子類實作
class ReadArticle extends PostParent {
public function __construct($id) {
$this->querySQL = <<fetchResult;
return <<timeAgo}</time>
</div>
<div class="post-p-div">{$r['text']}</div>
</div>
EOF;
}
}
呼叫流程
$article = new ReadArticle(123);
$sql = $article->getSQL();
$res = mysql_query($sql);
$article->fetchResult($res);
$article->timeAgo = '2 days ago'; // 由 TimeAgo 類產生
echo $article->buildHTML();
說明
- 抽象類規範「必須實作 buildHTML()」,確保一致性。
- 資料庫操作與 HTML 產生分離,符合單一職責原則。
- 列表頁可重複呼叫
fetchResult() + buildHTML()。
- 現代專案建議改用 PDO、模板引擎(Twig/Blade)取代 Heredoc。