您的位置:首页 > 编程语言 > PHP开发

php抽象类和抽象方法

2012-04-11 20:05 169 查看
在进行一个大网站开发时,我们会碰到这种情况(我们调用同样的方法名,但是想实现不同的效果。),为了解决这种情况可以使用抽象类来解决。

举个例子:在某个网站中涉及到缓存,首先一部分数据我想以缓存文件的形式保存到服务器上,而另一部分数据我只想是以key-value的形式保存到服务器上。

如果按平常的思路来解决问题:

1、定义生成缓存文件的类:

class FileCache(){
public function readCache(){
}
}
//     调用读取缓存文件的数据并得到结果
$read = new FileCache();
$read ->readCache();







2、定义缓存类

class MemCache(){
public function readCache(){
}
}
//调用读取缓存文件的数据并得到结果
$read = new MemCache();
$read ->readCache();
总结:我们在每次调用不同的方法时,都要对应的实例化相应类。

3、我们定义一个抽象类

abstract class Cache(){
private static $cacheArr;
//利用反射进行类的实例化
static function creatCache($name){
$cacheClass = new ReflectionClass ($name );
self::$cacheArr[$name] = $cacheClass->newInstance();
return  self::$cacheArr[$name];
}
//定义抽象方法,没有实体
abstract function readCache($key, $group = null, $outTime = 0);

class FileCache extends Cache(){
//方法实体
public function readCache(){
}
}
class MemCache extends Cache(){
//方法实体
public function readCache(){
}
}
//这样我们调用时
$name = 'File';
$cacheobj = Cache::creatCache($name);
$cacheobj->readCache('userdata');
总结:这样会省略大部分的代码,提高了代码的重用性
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: