• php学习九:存取器&魔术方法


    当声明属性的时候用到了private,那么的话只能本类中才能访问此属性,其他地方无法使用,这个时候需要给外界提供一些方法来使外界访问

    方法一:存取器:

    可以提供一个public的方法来使外界对类里面的属性进行访问和赋值

    class Student
    {
        private $name;
        private $age;
        public function show(){
            echo "{$this->name}今年{$this->age}岁了";
        }
        /*****存取器:get,set******/
        /****提供set方法给外界赋值***/
        public function setName($name){
            $this->name=$name;
        }
        public function setAge($age){
            if($age<0){
                $this->age = "18";
            }else{
                $this->age=$age;
            }
        }
    
        /******提供get方法给外界取值**********/
        public function getName(){
            return $this->name;
        }
        public function getAge(){
            return $this->age;
        }
    }
    

     实例化的代码:

    $stu = new Student();
    /*****不能直接访问,需要用类里面的set,get方法来访问******/
    $stu->setName("房明");
    echo $stu->getName();
    
    $stu->setAge(-18);
    echo $stu->getAge();
    
    $stu->show();
    

      

    方法二:魔术方法进行访问

    在php中文诶我们提供了许多的魔术方法,在这里我们只要是某某一个魔术方法就可以完成我们想要的效果

    *__set():赋值
    * __get():取值
    * __isset():是否有这个属性
    * __unset():销毁某个属性

    代码如下:
    class User
    {
        private $name;
        private $age;
    
        /*****__set():赋值****/
        function __set($name,$value)
        {
            if($name == "age"){
                if($value <18){
                    $this->age = 18;
                }else{
                    $this->age = $value;
                }
            }else{
                $this->$name = $value;
            }
        }
    
        /****__get():取值***/
        function __get($name)
        {
            if($name == "name"){
                return "dog";
            }else{
                return $this->$name;
            }
        }
    
        /***** __isset():是否有这个属性****/
        //当当前属性被isset()或者empty(),即当某个属性被检验空的方法调用的时候,会触发这个方法
        function __isset($name)
        {
            echo "{$name}isset被调用了";
        }
    
        /*******__unset():销毁某个属性******/
        //
        function __unset($name)
        {
            echo "{$name}被销毁了";
    
            //防止被销毁的时候直接写一个return即可;
        }
    
        public function show(){
            echo "{$this->name}今年{$this->age}岁了";
        }
    }
    

      魔术方法进行访问:

    $user = new User();
    $user->name = "房明";
    $user->age = 10;
    echo $user->name;
    
    echo $user->age;
    
    $user->show();
    
    isset($user->name);
    
    unset($user->name);
    

      

  • 相关阅读:
    Premiere&After Effects的实时预览插件开发
    Mac OS平台下应用程序安装包制作工具Packages的使用介绍(补充)
    kattle 发送post请求
    mybatis 动态sql表达式相关应用
    Echarts 之三 —— 地市联动数据统计二
    Echarts 之二——地市联动数据统计
    java 版本EChart使用
    dragsort html拖拽排序
    html iframe 元素之间的调用
    ORACLE lag()与lead() 函数
  • 原文地址:https://www.cnblogs.com/mmykdbc/p/6647312.html
Copyright © 2020-2023  润新知