我们首先讲,单例、工厂模式,两个最最基本的设计模式
设计模式中常用的魔术方法
- __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();