• 技术文章 >后端开发 >php教程

    PHP之封装概念详解

    小云云小云云2018-03-31 11:26:47原创3836

    本文主要和大家分享PHP之封装概念详解,主要以文字和代码的形式和大家分享,希望能帮助到大家。

    /* 面向对象三大特征: 封装 继承 多态 */

    // ===代码部分1===

    class Human {
        public $money = 1000;
    }$lisi = new Human();echo $lisi->money,'<br >'; //1000// 改变一下money$lisi->money = 500;echo $lisi->money,'<br >'; //500
    /* 然而在现实中,别人把你的钱减少了,显然是不合理的 所以我们要把钱设为私有的 */

    // ===代码部分2===

    class Human {
        private $money = 1000;    public function showMoney() {
            return $this->money * 0.8;
        }
    }$lisi = new Human();/*
    此时我们再调用或调用更改money时就会失败,
    因为我们把money“封起来”了
    //echo $lisi->money,'<br >'; //1000
    
    但是,我们不能光封起来,还要能够使用才行
    *//*
    我们不能直接翻别人口袋有多少钱
    但可以问别人,但是别人说的不一定是真的
    */echo $lisi->showMoney(); //800
    /* 把某些重要属性 封装起来 然后通过一个开放的接口来操作. 这就实现对属性的封装. */

    // ===代码部分3===

    // 封装在方法上的体现class Human {
        private $money = 1000;    private $bank = 2000;    private function getBank($num) {
            $this->bank -= $num;        return $num;
        }    public function send($much) {
            if($much <= 1000) {            $this->money -= $much;            return $much;
            } else if($much <= $this->money + $this->bank) {            $num = $much - $this->money; 
                //计算从银行取了多少钱
                $this->money += $this->getBank($num);            //从银行取出钱,加到现金里
    
                $this->money -= $much;            //再把钱借给朋友
                return $much;
            } else { 
                $this->money -= $much;            return $much;      
            //最后若实在借不了这么多的话返回false
                //return false;
            }
        }    public function showMoney() {
            return $this->money;
        }    public function showBank() {
            return $this->bank;
        }
    }$lisi = new Human();$m = $lisi->send(300);if($m) {    echo '借了',$m,'元<br >';    echo '还剩下',$lisi->showMoney(),'元<br >';
    }// 再借2000元$m = $lisi->send(2000);if($m) {    echo '借了',$m,'元<br >';    echo '还剩下',$lisi->showMoney(),'元<br >';    echo '银行还有',$lisi->showBank(),'元<br >';
    }
    /* 对于一个对象,对外界开放一个接口, 调用接口时,内部进行的操作,不需要让外界知道. 隐藏了内部的一些实现细节.
    这是对方法的封装. */
    /* 面向对象三大特征: 封装 继承 多态 */

    // ===代码部分1===

    class Human {
        public $money = 1000;
    }$lisi = new Human();echo $lisi->money,'<br >'; //1000// 改变一下money$lisi->money = 500;echo $lisi->money,'<br >'; //500
    /* 
    然而在现实中,别人把你的钱减少了,显然是不合理的 
    所以我们要把钱设为私有的 
    */



    // ===代码部分2===

    class Human {
        private $money = 1000;    public function showMoney() {
            return $this->money * 0.8;
        }
    }$lisi = new Human();/*
    此时我们再调用或调用更改money时就会失败,
    因为我们把money“封起来”了
    //echo $lisi->money,'<br >'; //1000
    
    但是,我们不能光封起来,还要能够使用才行
    *//*
    我们不能直接翻别人口袋有多少钱
    但可以问别人,但是别人说的不一定是真的
    */echo $lisi->showMoney(); //800
    /* 把某些重要属性 封装起来 然后通过一个开放的接口来操作. 这就实现对属性的封装. */

    // ===代码部分3===

    // 封装在方法上的体现class Human {
        private $money = 1000;    private $bank = 2000;    private function getBank($num) {
            $this->bank -= $num;        return $num;
        }    public function send($much) {
            if($much <= 1000) {            $this->money -= $much;            return $much;
            } else if($much <= $this->money + $this->bank) {            $num = $much - $this->money; 
                //计算从银行取了多少钱
                $this->money += $this->getBank($num);            //从银行取出钱,加到现金里
    
                $this->money -= $much;            //再把钱借给朋友
                return $much;
            } else { 
                $this->money -= $much;            return $much;      
            //最后若实在借不了这么多的话返回false
                //return false;
            }
        }    public function showMoney() {
            return $this->money;
        }    public function showBank() {
            return $this->bank;
        }
    }$lisi = new Human();$m = $lisi->send(300);if($m) {    echo '借了',$m,'元<br >';    echo '还剩下',$lisi->showMoney(),'元<br >';
    }// 再借2000元$m = $lisi->send(2000);if($m) {    echo '借了',$m,'元<br >';    echo '还剩下',$lisi->showMoney(),'元<br >';    echo '银行还有',$lisi->showBank(),'元<br >';
    }
    /* 对于一个对象,对外界开放一个接口, 调用接口时,内部进行的操作,不需要让外界知道. 隐藏了内部的一些实现细节.
    这是对方法的封装. */

    相关推荐:

    php面向对象之继承、多态、封装简介

    php的错误处理封装类详解

    PHP通信数据封装类的实现代码分享

    php入门到就业线上直播课:查看学习

    以上就是PHP之封装概念详解的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:php 详解 概念
    上一篇:wampserver如何配置php网站多站点 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 工具包分享:PHP实现滑块验证图片• 请教QQ互联的代码是如何写的? • 注册信息添加到数据库,该怎么处理 • zend framework怎么实现像 微博一样的 action • session,autoload(),有关问题。寻高手赐教。
    1/1

    PHP中文网