首页 > 作文

PHP中设计模式以及魔术方法

更新时间:2023-04-07 06:27:09 阅读: 评论:0

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 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图