zoukankan      html  css  js  c++  java
  • 封装

    复制代码
    <?php
    //封装
    //目的:为了使一个类更加安全
    /*class Ren
    {
        public $code;//人员代号
        public $name;//人员名称
        private $sex;//人员性别
        public $age;//人员年龄.2,人员条件年龄必须在18-50岁之间
        
        //构架方法,用来初始化性别
        function __construct($s)//传一个性别参数 
        {
            $this->sex = $s;//变量接受性别参数
        }
    
    }
    //2造对象
    $r = new Ren("男");
    $r->age = 100;//年龄
    
    var_dump($r);*/
    
    
    
    
    /*//做法:
    //1.将成员变量变为私有的
    //2.在类里面做方法来间接访问成员变量
    //3.在方法里面加控制
    class Ren
    {
        public $code;//人员代号
        public $name;//人员名称
        public $sex;//人员性别
        private $age;//人员年龄.2,人员条件年龄必须在18-50岁之间
        
        //构架方法,用来初始化性别
        function __construct($s)//传一个性别参数 
        {
            $this->sex = $s;//变量接受性别参数
        }
        //造一个修改年龄的方法
        function SetAge($a)//function它在外界可以访问。SetAge名字。($a)给的值
        {
            //加个控制年龄大于18小于50
            if($a>18 && $a<50)
            {
                $this->age = $a;
            }
            
        }
        //造一个获取age值的方法
        function GetAge()
        {
            return $this->age;
        }
    }
    */
    
    
    
    //3简单的魔术方法
    /*class Ren
    {
        public $code;//人员代号
        private $name;//人员名称
        public $sex;//人员性别
        private $age;//人员年龄
        
        //构架方法,用来初始化性别
        function __construct($s)
        {
            $this->sex = $s;
        }
        
        
        //用面向对象做  遇到这个类————set魔术方法解决的方案1先看看有没有限制条件,里头的类
        //给变量赋值的魔术方法,提到魔术方法都是双下划线打头————set
        function __set($n,$v)//这个方法里面需要两个参数1变量名称2变量值($name,$value)这是形参必须给2个值
        {
            if($n=="age")//判断变量名age
            {
                if($v>18 && $v<50)//age限制条件
                {
                    $this->$n = $v;//满足上面条件走这条
                }
            }
            else//不等于age就是没有限制条件
            {
                $this->$n = $v;//没有限制条件走这条
            }
        }
    }    
        
        
    
    //2造对象
    $r = new Ren("男");
    //$r->SetAge(30);
    //$r->__set("age",30);
    $r->age = 49;//自动调用__set()方法,将变量名当做第一个参数,将等号右边的值当做第二个参数.
    //$r->name = "张三";//名称那加private要是没有魔术方法提示汇报错误,有魔术方法就不会错误
    var_dump($r);//输出
    */
    
    
    
    class Ren
    {
        public $code;//人员代号
        private $name;//人员名称
        private $sex;//人员性别
        private $age;//人员年龄
        
        //构架方法,用来初始化性别
        function __construct($s)
        {
            $this->sex = $s;
        }
        function __set($n,$v)
        {
            if($n=="age")
            {
                if($v>18 && $v<50)
                {
                    $this->$n = $v;
                }
            }
            else
            {
                $this->$n = $v;
            }
        }
        //__get魔术方法,用来取变量值的
        function __get($n)
        {
            return $this->$n;
        }
    }
    //造对象
    $r = new Ren("男");
    $r->age = 30; //自动调用__set()方法,将变量名当做第一个参数,将等号右边的值当做第二个参数
    $r->name = "张三";
    echo $r->sex;//没有封装的写法调出最上面的男
    var_dump($r);
    
    ?>
    复制代码
  • 相关阅读:
    代码混淆那些事
    Windows10环境下 Nginx+ffmpeg自搭服务器制作RTMP直播流
    在Windows下搭建基于nginx的视频直播和点播系统
    windows下搭建基于nginx的rtmp服务器
    ijkplayer相关
    直播技术总结(三)ijkplayer的一些问题优化记录
    【.NET深呼吸】应用上下文(AppContext)
    【Win 10应用开发】自定义浮动层——Flyout
    【Win 10应用开发】AdaptiveTrigger在自定义控件中是可以触发的
    【.NET深呼吸】元组数据(Tuple)
  • 原文地址:https://www.cnblogs.com/xieyulin/p/7070364.html
Copyright © 2011-2022 走看看