• 魔术方法__set()


    __set()的作用:

    __set():在给不可访问属性赋值(private,protected,不存在)时,php就会执行__set()方法。大理石机械构件维修厂家

    上面我们说了__set()的作用是:在给不可访问属性赋值(private,protected,不存在)时,php就会执行__set()方法。

    这个是什么意思呢。比如说,我们还是以上面的实例为例。我们把猴子喜欢吃的桃子换成香蕉,但是根据规则来说,$food前面的关键词是protected
    ,不能直接访问,但是我们又需要对$food赋值,我们该怎么办呢?

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    <?php

    class Monkey{

    public $name;

    protected $food;

    function __construct($name,$food){

    $this->name = $name;

    $this->food = $food;

    }

    function sayHello(){

    echo '<br/>我是' . $this->name . '我喜欢吃' . $this->food;

    }

    //魔术方法

    function __get($pro_name){

    //先判断$pro_name是否存在

    if(isset($this -> $pro_name)){

    return $this -> $pro_name;

    }else{

    echo '属性值不存在';

    }

    }

    function __set($pro_name,$value){

    //先判断$pro_name是否存在

    if(isset($this -> $pro_name)){

    return $this -> $pro_name = $value;

    }else{

    echo '属性值不存在';

    }

    $monkey = new Monkey('猴子' , '桃子')

    $monkey -> sayHello();

    echo '猴子喜欢吃' . $monkey -> food;

    $monkey -> food = '香蕉';

    echo '<br/>';

    $monkey -> sayHello();

    因为我们的$food是保护的,所以不允许访问。那么,我们就要借助__set()魔术方法来实现。__set()方法包含两个参数,分别表示变量名称和变量值,两个参数不可省略。https://www.bzddrive.com/zxmzcj/1294.html

  • 相关阅读:
    redis 学习导航
    springcloud用法
    springcloud-概念
    倒排索引思想
    Java多线程编程实战读书笔记(一)
    java多线程中的三种特性
    汇编语言笔记
    同步/异步和阻塞/非阻塞
    乐观锁和悲观锁
    双亲委派模型
  • 原文地址:https://www.cnblogs.com/furuihua/p/12167670.html
Copyright © 2020-2023  润新知