我们首先讲,单例、工厂模式,两个最最基本的设计模式
设计模式中常用的魔术方法
- __get/__set 访问不存在的属性时
- __call(fun_name,para)/__callStatic 访问类不存在的方法时调用
- __tostring 将对象当做字符串时,调用,比如echo一个对象
- __invoke($param) 将对象当做函数使用的时候调用
工厂模式
- 如果一个类发生名字、参数等修改,可以直接在工厂里修改,不用在每个new的地方修改
class Factory {
static function createDB(){
return new DataBases();
}
}
单例模式
- 多次实例化和一次实例化效果一致,节省资源
class DataBases{
static private $db;
// 防止new
private function __construct(){
}
private function __clone(){}
static public function instance(){
if(!self::$db){
self::$db = new self();
}
return self::$db;
}
}
DataBases::instance();
网友评论