服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - PHP教程 - php 抽象类的简单应用

php 抽象类的简单应用

2019-12-11 13:35PHP教程网 PHP教程

我想博客中的 文章列表和单个的文章阅读 统一起来,我觉得除了sql查询语句结构不同,HTML代码不同,其它也就一样。不过话说回来,这两个都是主要功能,所以这的确有点不适合,不过昨晚读了一点设计模式,好歹得写点啥好。

All right, 父类postParent定义为抽象,规定子类必须重新实现 buildHTML()方法,这个方法并没有花括号,如果有不管有没有内容都会报错的。 
现在越看越觉得这代码完全没必要用抽象类,用继承也都很鸡肋,好吧,也没啥好说的好像。。。。。 
另外我把mysql 分开在外面了,所以调用方法很麻烦 
1,先实例化 readArticle 
2,mysql查询,参数来自 readArticle::getSQL(); 
3,返回mysql结果资源给 readArticle::fetchResult( $result ); 
4,readArticle::buildHTML(); 返回HTML 
如果是列表循环输出的话,把 3 和 4 重复调用就可以了 

复制代码代码如下:


abstract class postParent 

protected $querySQL; 
public $fetchResult; 
public $timeAgo; // eg : 2 days ago 
abstract protected function buildHTML(); 
public function getSQL() 

return $this->querySQL; 

public function fetchResult( $result ) 

$this->fetchResult = mysql_fetch_assoc( $result ); 

public function error() 
{} 

class readArticle extends postParent 

public function __construct( $id ) 

$this->querySQL =<<<eof 
SELECT title, author, text, unixtime FROM post 
WHERE id = $id ORDER BY unixtime DESC; 
eof; 

public function buildHTML() 

return <<<eof 
<div id="post-text"> 
<div class="post-title-div"> 
<h4> 
<a href="http://foodstory.me/post.php?id={$this->fetchResult['id']}" 
class="post-title-a" > {$this->fetchResult['title']} 
</a> 
</h4> 
</div> 
<div class="post-info-div"> 
<span class='post-info-author'>{$this->fetchResult['author']}</span> at 
<time class='post-info-time'>{$this->timeAgo}</time> 
</div> 
<div class="post-p-div"> 
{$this->fetchResult['text']} 
</div> 
</div> 
eof; 

延伸 · 阅读

精彩推荐