php 抽象类的简单应用
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;
}
}
相关推荐
-
PHP抽象类 介绍
在自然语言中,我们理解抽象的概念是,一个物体的一种大的描述,这种描述对某类物体来说是共有的特性.那么在PHP中也是一样的,我们把一个类进行抽象,可以指明类的一般行为,这个类应该是一个模板,它指示它的子方法必须要实现的一些行为. PHP抽象类应用的定义: abstract class ClassName{ } PHP抽象类应用要点: 1.定义一些方法,子类必须完全实现这个抽象中所有的方法 2.不能从抽象类创建对象,它的意义在于被扩展 3.抽象类通常具有抽象方法,方法中没有大括号 PHP抽象类应用重
-
php抽象类用法实例分析
本文实例讲述了php抽象类用法.分享给大家供大家参考.具体如下: <?php /* * abstract * 抽象类: * 1.至少有一个抽象方法(没有具体实现的方法) * 2.不能被实例化,可以被继承 * 3.抽象类可以有子抽象类 * 相对于接口: * 1.可以有属性 * 2.一个子类只能继承一个抽象类,但是可以实现多个接口 * * * */ abstract class qian { abstract function getfirst(); function gettwo() { echo
-
php接口和抽象类使用示例详解
一. 抽象类abstract class 1 .抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类. 2 .抽象类不能被直接实例化.抽象类中只定义(或部分实现)子类需要的方法.子类可以通过继承抽象类并通过实现抽象类中的所有抽象方法,使抽象类具体化. 3 .如果子类需要实例化,前提是它实现了抽象类中的所有抽象方法.如果子类没有全部实现抽象类中的所有抽象方法,那么该子类也是一个抽象类,必须在 class
-
PHP5.0对象模型探索之抽象方法和抽象类
面向对象程序通过类的分层结构构建起来,在单重继承语言如PHP中,类的继承是树状的. 一个根类有一个或更多的子类,再从每个子类继承出一个或更多下一级子类.当然,可能存在多个根类,用来实现不同的功能.在一个良好设计的体系中,每个根类都应该有一个有用的接口, 可以被应用代码所使用.如果我们的应用代码被设计成与根类一起工作,那么它也可以和任何一个从根类继承出来的子类合作. 抽象方法是就像子类中一般的方法的占位符(占个地方但不起作用),它与一般方法不同-没有任何代码.如果类中存在一个或更多抽象方法, 那么
-
php 接口类与抽象类的实际作用
1.php 接口类:interface 其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类,那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候php接口类就起到作用了,当我们定义了一个接口类时,它里面的方式是下面的子类必须实现的,比如 : 复制代码 代码如下: interface Shop { public function buy($gid); public function sell($gid); public function view($g
-
通过具体程序来理解PHP里面的抽象类
当然,可能存在多个根类,用来实现不同的功能. 在一个良好设计的体系中,每个根类都应该有一个有用的接口, 可以被应用代码所使用. 如果我们的应用代码被设计成与根类一起工作,那么它也可以和任何一个从根类继承出来的子类合作. 抽象方法是就像子类中一般的方法的占位符(占个地方但不起作用),它与一般方法不同-没有任何代码. 如果类中存在一个或更多抽象方法, 那么这个类就成了抽象类. 你不能实例化抽象类. 你必须继承它们,然后实例化子类. 你也可以把抽象类看成是子类的一个模板. 如果你覆写所有的抽象方法,
-
php抽象类使用要点与注意事项分析
本文实例分析了php抽象类使用要点与注意事项.分享给大家供大家参考.具体分析如下: php抽象类使用要点与注意事项如下: 1.用 abstract 来修饰一个类,那么这个类就是抽象类:抽象类绝对不能被实例化,即$abc = new 抽象类名();会报错. 2.用abstract 来修饰一个方法,那么该方法就是抽象方法: 3.如果类中有一个抽象方法,那么该类就必须定义为抽象类:但反过来,抽象类里并不一定要有抽象方法.另外,抽象类里也可以有普通方法. 4.抽象方法不能有方法体.即abstract f
-
php面向对象全攻略 (十二) 抽象方法和抽象类
抽象方法和抽象类 在OOP 语言中,一个类可以有一个或多个子类,而每个类都有至少一个公有方法做为 外部代码访问其的接口.而抽象方法就是为了方便继承而引入的,我们先来看一下抽象类和 抽象方法的定义再说明它的用途. 什么是抽象方法?我们在类里面定义的没有方法体的方法就是抽象方法,所谓的没有方 法体指的是,在方法声明的时候没有大括号以及其中的内容,而是直接在声明时在方法名后 加上分号结束,另外在声明抽象方法时还要加一个关键字"abstract"来修饰: 例如: abstract functi
-
php 抽象类的简单应用
All right, 父类postParent定义为抽象,规定子类必须重新实现 buildHTML()方法,这个方法并没有花括号,如果有不管有没有内容都会报错的. 现在越看越觉得这代码完全没必要用抽象类,用继承也都很鸡肋,好吧,也没啥好说的好像..... 另外我把mysql 分开在外面了,所以调用方法很麻烦 1,先实例化 readArticle 2,mysql查询,参数来自 readArticle::getSQL(); 3,返回mysql结果资源给 readArticle::fetchResul
-
C#抽象类和接口的区别分析
很多C#的初学者在编程时都容易把抽象类和接口搞混,本文就为大家从概念上讲解抽象类和接口的区别: 一.抽象类: 含有abstract修饰符的class即为抽象类,抽象类是特殊的类,只是不能被实例化,可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们.另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖. 二.接口: 接口是
-
c#中抽象类和接口的详细介绍
一.抽象类:抽象类是特殊的类,只是不能被实例化:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们.另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们. 二.接口:接口是引用类型的,类似于类,和抽象类的相似之处有三点: 1.不能实例化: 2.包含未实现的方法声明: 3.派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他
-
Java 深入浅出解析面向对象之抽象类和接口
目录 抽象类 声明抽象类 声明抽象方法 案例 使用规则 接口 声明接口 案例 接口特性 抽象类和接口的区别 抽象类 java语言,声明类时 abstract class Db{} 说明Db类为抽象类. java语言中,抽象方法是说没有方法的实现(方法体)此方法为抽象方法,只有抽象类和接口中才可以有抽象方法. 声明抽象类 声明抽象类很简单,加个abstract关节字就行. public abstract class AA { } 声明抽象方法 在抽象类中声明一个抽象方法,抽象方法没有方法体,就是说
-
Java设计模式之代理模式与装饰模式实例详解
本文实例讲述了Java设计模式之代理模式与装饰模式.分享给大家供大家参考,具体如下: 之所以把这两种模式放在一起说,是因为我发现这了两种模式几乎一模一样! 从网上也搜了一些资料,发现两者还是有一些区别的.我们在学习的同时也把这种困惑搞清楚. 定义: 代理模式,为其他对象提供一种代理以控制对这个对象的访问. 装饰模式,动态地给一个对象添加一些额外的职责. 代理模式,很好理解,就是把一个对象再次封装,以后就对封装的对象访问就可以了. 因为代理对象已经取代了被代理对象. 装饰模式,给一个对象增加功能,
-
基于c# 类、接口、结构的联系与区别详解
一.C#类与结构的差别1. 值类型与引用类型结构是值类型:值类型在堆栈上分配地址,所有的基类型都是结构类型,例如:int 对应System.int32 结构,string 对应 system.string 结构 ,通过使用结构可以创建更多的值类型类是引用类型:引用类型在堆上分配地址堆栈的执行效率要比堆的执行效率高,可是堆栈的资源有限,不适合处理大的逻辑复杂的对象.所以结构处理作为基类型对待的小对象,而类处理某个商业逻辑因为结构是值类型所以结构之间的赋值可以创建新的结构,而类是引用类型,类之间的赋
-
简单学习Java抽象类要点及实例
使用抽象类应该注意的几个要点: 包含一个或者多个抽象方法的类必须被声明为抽象类. 将类声明为抽象类,不一定含有抽象方法.通常认为,在抽象类中不应该包括具体方法,建议尽量将通用的域和方法放在超类中.抽象类不可以被实例化.即不能创建这个类的对象 实例代码: 复制代码 代码如下: import java.util.*; /** * This program demonstrates abstract classes. * @version 1.01 2004-02-21 * @author Cay H
-
简单理解Java的抽象类
在自上而下的继承层次结构中,位于上层的类更具有通用性,甚至可能更加抽象.从某种角度看,祖先类更加通用,它只包含一些最基本的成员,人们只将它作为派生其他类的基类,而不会用来创建对象.甚至,你可以只给出方法的定义而不实现,由子类根据具体需求来具体实现. 这种只给出方法定义而不具体实现的方法被称为抽象方法,抽象方法是没有方法体的,在代码的表达上就是没有"{}".包含一个或多个抽象方法的类也必须被声明为抽象类. 使用 abstract 修饰符来表示抽象方法和抽象类. 抽象类除了包含抽象方法外,
-
使用简单工厂模式来进行Python的设计模式编程
计模式的目的是让代码易维护.易扩展,不能为了模式而模式,因此一个简单的工具脚本是不需要用到任何模式的. 简单工厂模式又叫静态工厂方法模式,工厂模式家族中最简单的一种模式.这个模式的基本工作方式: 通过一个工厂来决定创建哪种具体的产品实例. 下面是一个简单的工厂实例: def create_animal(name): if name == 'dog': return Dog() elif name == 'cat': return Cat() animal = create_animal('dog
-
Ruby类继承、抽象类、类拓展混入、代理类实例
总结一下工作中遇到的类扩展: 1.类继承: 当多个类公用很多方法的时候可以将公用方法部分抽取出来,需要的类做相关继承. 例子: 复制代码 代码如下: class A < ActiveRecord::Base def a p "it was a " end end class B<A end class C<A end B.new.a #=>"it was a " C.new.a #=>"it w
随机推荐
- SQLServer 中的死锁说明
- Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
- JQuery中DOM事件绑定用法详解
- 移动端脚本框架Hammer.js
- Windows进程崩溃问题的定位方法
- Java接口中尽量避免使用数组
- C#中字符串的一般性和特殊性
- python 正则表达式学习小结
- Android帧动画、补间动画、属性动画用法详解
- Android开发之ImageLoader使用详解
- Android仿QQ空间动态界面分享功能
- wampserver下mysql导入数据库的步骤
- 原生javaScript做得动态表格(注释写的很清楚)
- Lua读写文件代码示例
- 微信小程序 教程之注册程序
- 关闭浏览器窗口弹出提示框并且可以控制其失效
- PHP 超链接 抓取实现代码
- C#设置页面单位和缩放的方法
- Nginx中配置开启Nginx Status来查看服务器运行状态
- Android中ImageView.src设置图片拉伸、填满控件的方法