zoukankan      html  css  js  c++  java
  • php类中__get和__set的用法

    当试图获取一个不可达变量时,类会自动调用__get。

    同样的,当试图设置一个不可达变量时,类会自动调用__set。
    在网站中,这两个并不是什么非用不可的函数。
     
    例如:
    Class Test
    {
        private $a = 1;
        private $b = 2;
        public  $c = 3;
     
        public function  __get($vname)
        {
            return "you can not get";
        }
     
        public function __set($vname,$value)
        {
            echo  "you can not set";
        }
    }
     
    $t = new Test;
     
    echo $t->a;//这里试图要打印出私有变量
    $t->b=3;//这里试图要把私有变量进行设置

    想要直接对私有变量操作,当然是做不到的。

    于是在读取的时候,调用__get(),输出“you can not get”;
    在设置的时候,调用__set(),输出“you can not set”。
     
    顺便提一下,__get()和__set()函数要设置为public,要不然会Warning。
    __get()和__set()函数定义时的参数分别为1个和2个,不管函数中到底有没用,都是不可省略的。
     
    通过修改__get()和__set()函数内部的语句,就可以实现在外部调用类的私有变量。
    例如:
    private __get($vname)
    {
        return $this->$vname;
    }
    

    如果$vname的值是a,那么就返回了正确的值。

    __set()也同理。
    public function __set($vname,$value)
    {
        $this->$vname = $value;
    }
    
  • 相关阅读:
    js去前后空格
    IE7以上支持Fiddler 监听本地
    IE8 scriptX print 无法使用的bug
    那些相见恨晚的 JavaScript 技巧
    oracle sql
    JS人民币金额转大写程序
    div自适应高度
    .NET Remoting 使用最佳实践,(部分翻译)
    对DataTable 进行Distinct操作
    用财富的眼光看知识管理
  • 原文地址:https://www.cnblogs.com/zheart/p/6760358.html
Copyright © 2011-2022 走看看