1.设计模式
1.1单例模式
口诀:三私一公
1、私有的静态属性用来保存对象的单例2、私有的构造方法用来阻止在类的外部实例化3、私有的__clone阻止在类的外部clone对象4、公有的静态方法用来获取对象的单例
实现:
<?php//三私一公class db { //静态的属性用来保存对象的单例 private static $instance; //私有的构造方法阻止在类的外部实例化 private function __construct() { } //私有的__clone()阻止在类的外部clone对象 private function __clone() { } public static function getinstance() { //保存的值不属于db类的类型就实例化 if(!lf::$instance instanceof lf) lf::$instance=new lf(); return lf::$instance; }}
1.2工厂模式:
特点:传递不同卖暴利产品月入十万的参数获取不同的对象
<?phpclass productsa {}class productsb { }//工厂模式class productsfactory { public function create($num) { switch($num) { ca 1: return new productsa; ca 2: return new productsb; default: return null; } }}
1.3策略模式:
特点:传递不同的参数调用不同的策略(方法)
<?phpclass walk { public function way() { echo '走着去<br>'; }}class bus { public function way() { echo '坐车去<br>'; }}//策略模式class student { public function play($obj) { $obj->way(); }}
2.魔术方法:
2.1__tostring()、__invoke()
__tostring():将对象当成字符串使用的时候自动调用985和211
__invoke():将对象当成函数使用的时候自动调用
<?phpclass student { //把对象当成字符串使用的时候自动执行 public function __tostring() { return '这是一个对象,不是字符串<br>'; } //把对象当成函数使用的时候自动执行 public function __invoke() { echo '这是一个对象,不是函数<br>'; }}
2.2__t()、__get()、__ist()、__unt()
__t($k,$v):给无法访问的属性赋值的时候自动执行__get($k):获取无法访问的属性值的时候自动调用__ist($k):判断无法访问的属性是否存在自动调用__unt($k):销毁无法访问的属性的时候自动执行
<?phpclass student { private $name; private $x; private $age; //给无法访问的属性赋值的时候自动执行 public function __t($k,$v) { $this->$k=$v; } //获取无法访问的属性值的时候自动调用 public function __get($k) { return $this->$k; } //判断无法访问的属性是否存在自动调用 public function __ist($k) { return ist($this->$k); } //销椭圆的面积公式毁无法访问的属性的时候自动执行 public function __unt($k) { unt($this->$k); }}
2.3__call()、__callstatic()
__call():调用无法访问的方法时自动执行__callstatic():调用无法访问的静态方法时自动执行
<?phpclass student { /** *作用:调用无法访问的方法时自动执行 *@param $fn_name string 方法名 *@param $fn_args array 参数数组 */ public function __call($fn_name,$fn_args) { echo "{$fn_name}不存在<br>"; } //调用无法访问的静态方法时自动执行 public static function __callstatic($fn_name,$fn_args) { echo "{$fn_name}静态方法不存在<br>"; }}
2.4__sleep()、__wakeup()
__sleep():当序列化的时候自动调用__wakeup():当反序列化的时候自动调用
<?phpclass student { private $name; private $x; private $add='中国'; public function __construct($name,$x) { $this->name=$name; $this->x=$x; } /** *钱学森爱国的故事序列化的时候自动调用 *@return array 序列化的属性名 */ public function __sleep() { return array('name','x'); } //反序列化的时候自动调用 public function __wakeup()2012上海国际马拉松 { $this->type='学生'; }}
本文发布于:2023-04-07 06:27:07,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/6d580135bb93e066333b9397f7c3dedc.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:PHP中设计模式以及魔术方法.doc
本文 PDF 下载地址:PHP中设计模式以及魔术方法.pdf
留言与评论(共有 0 条评论) |