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

__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);

php -- 魔术方法 之 设置属性:__set()的更多相关文章

  1. Python基础之魔术方法(控制属性的访问和设置)

    # 魔术方法--常规方法# 1. __int__ 构造函数# 2. __new__ 在类实例之前就创建了# 3. __iter__ 迭代器# 4. __del__ 析构方法,用来清除释放的对象内存# ...

  2. PHP面向对象魔术方法之__get 和 __set函数

    l 基本的介绍 (1) 当我们去使用不可以访问的属性时,系统就会调用__get方法. (2) 不可以访问的属性指的是(1 . 该属性不存在 2. 直接访问了protected或者private属性) ...

  3. php -- 魔术方法 之 删除属性:__unset()

    属性重载:当访问一个不存在或者权限不够的属性的时候,能够触发一系列的魔术方法,就叫做属性重载 __unset():当删除一个不存在或者权限不够的属性的时候会自动触发 <?php //属性重载 c ...

  4. php -- 魔术方法 之 判断属性是否存在或为空:__isset()

    属性重载:当访问一个不存在或者权限不够的属性的时候,能够触发一系列的魔术方法,就叫做属性重载 __isset($name):当使用 isset()函数或者empty()函数 判断属性是否存在或者是否为 ...

  5. php -- 魔术方法 之 获取属性:__get()

    属性重载:当访问一个不存在或者权限不够的属性的时候,能够触发一系列的魔术方法,就叫做属性重载 __get():获取不存在或者权限不够的属性的时候会自动触发 <?php header('Conte ...

  6. __unset()魔术方法 删除类内私有属性

    __unset()魔术方法 删除私有属性 unset()对共有属性进行删除 可通过__unset()魔术方法对私有属性进行操作 当在类外部执行unset()函数时,自动执行类内__unset()魔术方 ...

  7. PHP 设计模式 笔记与总结(5)PHP 魔术方法的使用

    PHP 魔术方法的使用 ① __get/__set:将对象的属性进行接管 当访问一个不存在的对象属性时: index.php <?php define('BASEDIR',__DIR__); / ...

  8. PHP中的常见魔术方法功能作用及用法实例

    概述 在面向对象编程中,PHP提供了一系列的魔术方法,这些魔术方法为编程提供了很多便利.PHP中的魔术方法通常以__(两个下划线)开始,并且不需要显示的调用而是由某种特定的条件出发. 开始之前 在总结 ...

  9. PHP的那些魔术方法(一)

    在PHP中,有一堆魔术方法,服务于类和对象.PHP虽然也是纯种的面向对象语言,但是之前的PHP还真不是,所以有一些面向对象的标准实现并不完善,比如重载.但是,我们可以通过一些魔术方法来弥补,例如__c ...

随机推荐

  1. Unity3d中使用log4net

    原地址:http://www.cnblogs.com/koalaylj/archive/2012/09/04/2670629.html 最近在用unity3d开发Android上的游戏,一直Debug ...

  2. 彻底告别加解密模块代码拷贝-JCE核心Cpiher详解

    前提 javax.crypto.Cipher,翻译为密码,其实叫做密码器更加合适.Cipher是JCA(Java Cryptographic Extension,Java加密扩展)的核心,提供基于多种 ...

  3. QtGui.QColorDialog

    he QtGui.QColorDialog provides a dialog widget for selecting colour values. #!/usr/bin/python # -*- ...

  4. 【CODEFORCES】 A. Keyboard

    A. Keyboard time limit per test 2 seconds memory limit per test 256 megabytes input standard input o ...

  5. 快速掌握Gif动态图实现代码

    版权声明:本文为博主原创文章,未经博主允许不得转载. 前言:Gif一种动态图片,网上有很多制作这个的工具,包括PS都有,但作为一名程序员,我觉得如果自己通过编写代码把它实现,不但是对代码的掌握与复习, ...

  6. [Jobdu] 题目1504:把数组排成最小的数

    题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 输入: 输 ...

  7. ruby gem tips(转)

    淘宝源: https://ruby.taobao.org 升级ruby gem gem update --system 查看gem版本 gem -v 查看gem版本,gems安装目录,remote s ...

  8. 处理图片(updated)

    高像素的图片,比如分辨率为 7712x4352 的照片,当加载到一个 bitmap 中时会占用相当大的内存. 每个像素会占用 4个字节的内存,所以当没有被压缩时,全部的图片会占用 12800万字节(约 ...

  9. [转]T-SQL_面试题

    [转]T-SQL_面试题 2015-05-19 1 创建表插入数据 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,s ...

  10. 【转载】SAP_ECC6.0_EHP4或SAP_ECC6.0_EHP5_基于Windows_Server_2008R2_和SQL_server_2008下的安装

    其实这是之前Michael_z 5篇文章的集合,但作者做了一些补充 参考重要安装文档:http://www.cnblogs.com/Michael_z/category/322108.html(本博客 ...