zoukankan      html  css  js  c++  java
  • php -- 魔术方法 之 设置属性:__set()

    属性重载:当访问一个不存在或者权限不够的属性的时候,能够触发一系列的魔术方法,就叫做属性重载

    __set():当用户在设置不存在或者权限不够的属性的时候会自动触发

    没有设置__set($name,$value)的时候,可以给$person对象增加任意多个属性,这样可能会导致被恶意攻击

    <?php
    
       //属性重载
       class Person{
    }
    //实例化 $person = new Person(); //给对象增加属性 $person->name = '梅西'; $person->age = 27;

    添加魔术方法:__set($name,$value)

    <?php
    
       //属性重载
       class Person{
    
          //魔术方法__set
          //两个参数:属性名,属性值
          public function __set($name,$value){
             //增加一个允许列表
             $allow = array('name','age','tail');
    
             //判断用户的操作是否合法
             if(in_array($name,$allow)){
                //增加属性
                $this->$name = $value;
             }
          }
       }
    
       //实例化
       $person = new Person();
    
       var_dump($person);
    
       //给对象增加属性
       $person->name = '梅西';
       $person->age  = 27;
    
       //增加一个不允许的属性
       $person->drag = '大麻';
    
       var_dump($person);
  • 相关阅读:
    ajax全套
    url设计规范
    内置下划线方法
    rest_framework视图
    rest_framework
    数据库设置
    HDU 6231
    HDU 6242
    CodeForces 546D
    CodeForces 940E
  • 原文地址:https://www.cnblogs.com/hf8051/p/4654246.html
Copyright © 2011-2022 走看看