• php之属性重载和方法重载


    <?php
    /**
     * 
     * @authors Your Name (you@example.org)
     * @date    2016-06-13 20:40:19
     * @version $Id$
     */
    //属性重载
    
    class Student{
        private $name;
        public $age;
        public $xuehao;
    
        public function __construct($name,$age,$xuehao)
        {
        	$this->name=$name;
        	$this->age=$age;
        	$this->xuehao=$xuehao;
        }
        	//当访问一个不存在的属性是自动
        //读取不可访问属性的值或者不存在时
        public function __Get($name)
        {
         return "属性不存在";		
    
        }
    
        //在给不可访问属性赋值或者不存在时
        
        public function __Set($name ,  $value )
        {
        	@$this->data[$name]=$value;
        	echo  "Setting {$name} to {$value}
    " ;
        }
    
    
        //判断属性是否存在
        public function __isset ($name)
        {
        	var_dump($name);
        }
        //方法重载
        public function __call($name,$value)
        {
        	echo "方法不存在或不能被调用";
        }
    
        //当对象转换为字符串时自动调用
        public function __Tostring()
        {
           return $this->name;
        }	
    
    
    }
    
    $p=new Student("a","10","20100");
    echo $p;
    

      

    PHP所提供的"重载"(overloading)是指动态地"创建"类属性和方法。我们是通过魔术方法(magic methods)来实现的。

    当调用当前环境下未定义或不可见的类属性或方法时,重载方法会被调用。本节后面将使用"不可访问属性(inaccessible properties)"和"不可访问方法(inaccessible methods)"来称呼这些未定义或不可见的类属性或方法。

    所有的重载方法都必须被声明为 public。 

     

     

     

  • 相关阅读:
    Linux Shell脚本详细教程
    linux下错误代码E212: Can't open file for writing
    github仓库的基本使用-创建、上传文件、删除
    -bash: ifconfig: command not found解决办法
    Xshell能ping通但连不上CentOS 7
    devtools和vuex mutations
    Google Chrome谷歌浏览器安装devtools
    Vuex状态管理模式
    vue Promise all
    vue Promise链式调用
  • 原文地址:https://www.cnblogs.com/mengluo/p/5582103.html
Copyright © 2020-2023  润新知