zoukankan      html  css  js  c++  java
  • php 魔术方法学习笔记

    __get()  __set()    __isset()   __unset

    __call   __callstatic

    __call是调用不可见(不存在或者没权限)的方法时,自动调用。

    $lisi->say(1,2,3)   对象中并不存在say 方法   __call("say",array(1,2,3))运行

    __get()用来获取私有成员的属性值,有一个参数,参数传入你要获取的私有成员的属性名称,返回的是获取的值。该方法不用我们手工去调用,只需要封装在类里面就好了。如果成员属性不封装成私有的,对象本身就不会去自动调用这个方法。如下代码

    //__get()方法用来获取私有属性

    class tian{
    private $age=18;
    public function __get($property_name)
    {
    if(isset($this->$property_name)){
    return($this->$property_name);
    }

    }
    }
    $a=new tian();
    echo $a->age;

    如果要调用的私有属性存在,就会返回传递给私有属性的值,否则就为空
    $a=new tian();
    $a->age;此处会得到18,通过__get()魔术方法,使得在类的外部也能调用私有属性。
     
    __set() 为私有属性赋值,有两个参数,一个参数是私有属性的名称,第二个参数是要给私有属性赋的值,没有返回值,同样也不需要我们手动去调用,是封装在类中的。
    例如如下代码

    class tian{
    private $age=18;
    public function __get($property_name)

    if(isset($this->$property_name)){
    return($this->$property_name);
    }

    }

    public function __set($a,$v){
    echo  $this->$a ;

    }
    }
    $a=new tian();
    echo $a->name="大傻逼";

    如果成员属性不是私有的,也不会调用到该函数。

     
  • 相关阅读:
    Linux 修改时区(debain)
    C#生成验证码
    httpPost 请求
    C# Array.FindAll
    C#删除字符串中所有的空字符
    C# 获取汉字区位码
    Qinq Vlan mapping 和DHCP 服务器
    Sql 分页存储过程
    request 之getParameterMap 方法
    如果我是面试官
  • 原文地址:https://www.cnblogs.com/paddygege/p/6507550.html
Copyright © 2011-2022 走看看