zoukankan      html  css  js  c++  java
  • php常用的魔术方法

    __construct:构造函数,一旦创建对象都就会自动调用

    __call:当调用了未定义的方法时会自动触发

    __set:当给类外部不可访问的属性设置值时会自动触发

    __get:当获取类外部不可访问的属性时会自动触发

    __isset:当对类外部不可访问的属性使用了isset()或empty()时会自动触发

    __unset:当对类外部不可访问的属性使用了unset()时会自动触发

    __destruct:当对象结束其生命周期时就会自动触发

    <?php 
    header("content-type:text/html;charset=UTF-8");
    class Magic{
        private $testGet;       //私有测试__get魔术方法的属性
        private $testSet;       //私有测试__set魔术方法的属性
        private $testIsset;     //私有测试__isset魔术方法的属性
        private $testUnset;     //私有测试__unset魔术方法的属性
        public static $a=1;     //私有用于测试__clone魔术方法的常量
    
        /**
         * 测试构成方法,创建新对象时先调用此方法
         */
        public function __construct(){
            echo static::$a+2;
            echo "这是构造函数"."<br>"."<br>";
        }
    
        /**
         * 测试isset方法,这是当不可访问的属性被调用了isset()或者empty()方法时会触发
         */
        public function __isset($name){
            echo "对不可访问属性:".$name."调用 isset() 或 empty()"."<br>"."<br>";
        }
    
        /**
         * 测试unset方法,这是当不可访问的属性被调用了unset()方法时会触发
         */
        public function __unset($name){
            echo "当对不可访问属性:".$name."调用unset()"."<br>"."<br>";
        }
    
        /**
         * 测试call方法,这是当调用了未定义的方法时会触发
         */
        public function __call($method,$agrs){
            echo "调用了不存在的方法:".$method."<br>"."这是接收的参数:";
            print_r($agrs);
            echo "<br>"."<br>";
        }
    
        /**
         * 测试set方法,这是当不可访问的属性被设置时会触发
         */
        public function __set($name,$data){
            echo "调用了不可设置的属性:".$name."<br>"."参数为:".$data."<br>";
        }
    
        /**
         * 测试get方法,这是当不可访问的属性被访问时会触发
         */
        public function __get($name){
            echo "调用了不可获取的属性:".$name."<br>"."<br>";
        }
    
        /**
         * 测试clone方法,这是类被克隆时会触发
         */
        public function __clone(){
            echo static::$a+1;
            echo "我被克隆了"."<br>"."<br>";
        }
    
        /**
         * 测试析构方法,这是当在脚本关闭时被调用
         */
        public function __destruct(){
            echo "这是析构函数";
        }
    }
    
    
    $test=new Magic(); //实例化Magic类,触发构造函数
    
    $test->callMethod('123');   //调用不存在的方法
    
    $test->testSet=123;     //设置类外部不可访问的属性
    
    $test->testGet;         //获取类外部不可访问的属性
    
    $test2=clone $test;     //克隆test类,开辟了另一份一模一样的属性和方法存储空间,但相互不会影响
    isset($test->testIsset);       //用isset执行类外部不可访问的属性
    unset($test->testUnset);        //用unset执行类外部不可访问的属性
    
  • 相关阅读:
    LeetCode20 有效的括号
    函数的多个参数
    定义一个函数的基本语法 函数的参数
    函数
    金字塔
    水仙花数
    百鸡百钱
    循环demo
    while适用于不确定循环次数
    浏览器打断点
  • 原文地址:https://www.cnblogs.com/legendheng/p/9175692.html
Copyright © 2011-2022 走看看