`

常用的几个魔术变量

 
阅读更多

 

一、魔术方法__get 和 __set的使用:管理类中不存在的变量属性成员

 

在类中使用该两个函数

class Test{

 

    protected $arr = array();

    protected $page = 10;

 

    public function __set( $key, $value ){

        echo __METHOD__;

        $this->arr[$key] = $value;

    }

 

    public function __get( $key ){

        echo __METHOD__;

        return $this->arr[$key];

    }

}

 

使用示例

$test = new Test();

$test->title = "hello";  //给不存在的类的变量属性赋值时候会调用__set函数

echo $test->title;       //使用不存在的变量时候会调用_get函数

 

 

//__call管理类中不存在的非静态方法,__callStatic则管理不存在的静态方法

 

class Test{

 

    public function __call( $func, $param ){

        var_dump(__METHOD__);

        var_dump($func);

        var_dump($param);

 

        $err = $func."方法不存在";

        echo $err;

    }

   

     static public function __callStatic( $func, $param ){

 

        $err = $func."静态方法不存在";

        echo $err;

    }

 

}

 

$test = new Test();

$test->demo();      //当使用类中不存在的方法时候,会使用到定义的__call方法

 

 

 

//__toString方法是当直接输出一个对象时候,可以通过调用该方法输出字符串形式的类的名称

 

Class Test{

   

    public function __toString(){

        return __CLASS__;

    } 

}

 

$test = new Test();

 echo $test;  //调用__toString方法

 

 

 

 //__invoke方法:把对象当做方法使用时候会调用

 

Class Test(){

     public function __invoke( $param = ''){

        var_dump($param);

        return "ggggg";

    }

}

 

$test = new Test();

echo $test('fff');

 

分享到:
评论

相关推荐

    PHP中几个常用的魔术常量

    以下是对七个常用魔术常量的详细说明: 1. **__LINE__**:这个常量表示当前执行的代码行号。当你需要在错误报告或日志中记录错误发生的确切位置时,__LINE__ 非常有用。它的值会随着代码的执行而动态变化。 2. **_...

    数据结构常见问题:12单元19 魔术方阵问题.doc

    这个算法使用数组 `a` 来存储魔术方阵的元素,并使用 `i` 和 `j` 变量来控制元素的填充顺序。算法首先将 1 填入最上行的中间格,然后往右上方走,以 1 的级数增加其值,并将此值填入空格;若超出方阵,则往下到最...

    e语言-魔术棒选取算法

    在易语言环境中,魔术棒选取算法的实现可能包括以下几个部分: - 图像数据读取:读取图像文件,将其转化为程序可以处理的数据结构。 - 颜色比较:定义颜色差异的计算方式,通常使用欧氏距离或RGB差值。 - 递归选取:...

    php常见面试问题及答案

    面向对象编程(OOP)是PHP中的一个重要特性,主要包括以下几个概念: - **继承**:允许一个类继承另一个类的属性和方法。子类可以通过`extends`关键字来继承父类,从而扩展或修改父类的行为。 - **封装**:通过将数据...

    使用PHP获取当前url路径的函数以及服务器变量

    在描述中提到了几个关键的 `$_SERVER` 变量: - `$_SERVER['DOCUMENT_ROOT']`:这个变量返回的是Web服务器配置中定义的文档根目录。它通常与Apache服务器的 `DocumentRoot` 配置指令对应,用于确定Web服务器查找...

    php基础入门详解(含视频学习地址).pdf

    11. 魔术常量:介绍了PHP中八个魔术变量,它们在特定情况下自动可用,如__LINE__(当前代码行号)、__FILE__(当前文件名)等。 12. 注释:介绍了PHP中的单行注释(//或#)和多行注释(/* ... */)的使用。 此外,...

    PHP获取路径和目录的方法总结【必看篇】

    1. __FILE__:这个魔术变量返回当前执行的脚本文件的完整路径和文件名。例如,如果你的脚本位于D盘下的web目录中,并且文件名为index.php,那么__FILE__将返回"D:/web/index.php"。需要注意的是,这个值是只读的,也...

    高级PHP应用程序漏洞审核技术

    传统的代码审计技术主要包括以下几个方面: 1. **输入验证**:确保所有外部输入数据符合预期格式和范围。 2. **输出过滤**:在数据输出到用户之前进行过滤处理,防止跨站脚本(XSS)等攻击。 3. **代码审查**:人工或...

    PHPCMS整站代码分析讲解.doc

    接下来,通过`unset()`函数清空了几个PHP老版本中的全局变量,如`$HTTP_ENV_VARS`和`$HTTP_POST_VARS`,因为在PHP 4.1.0及以上版本,这些变量已被`$_REQUEST`、`$_POST`等超全局变量取代。清理这些变量是为了提高...

    重构中的源码,可能对照重构的书籍进行阅读

    针对“重构”这一标签,我们可以学习以下几个重构技术: 1. **提取方法**:当一个方法变得过长或者承担太多职责时,可以将其分解为多个小方法,每个小方法只负责单一任务。 2. **移动函数/变量**:如果一个函数或...

    java编码规范.zip

    华为的Java编码规范主要涵盖了以下几个方面: 1. **命名规范**:包括类名、方法名、变量名等应遵循驼峰命名法,常量全大写,每个单词间用下划线分隔。包名使用小写字母,类名首字母大写,接口名与类名相同,方法名...

    php学习笔记之基础知识

    本文主要涵盖了PHP的几个核心概念,包括输出指令、变量、类型、数组、对象以及常用函数。 首先,PHP中的输出指令主要有echo和print。echo是一个语言结构,它能快速地输出一个或多个字符串,没有返回值。相比之下,...

    重构改善既有代码的设计(经典ppt)

    在重构过程中,主要关注以下几个关键知识点: 1. **识别坏味道**:代码坏味道是重构的起点,比如过长方法、重复代码、复杂的条件语句等,这些都是需要改进的信号。通过识别这些坏味道,我们可以找到重构的目标。 2...

    php规范

    首先,PHP代码规范通常涵盖以下几个方面: 1. **缩进与空格**:大部分PHP社区推荐使用四个空格进行代码缩进,而不是制表符,这样可以使代码在不同的编辑器和系统中显示一致。 2. **代码结构**:良好的代码结构包括...

    PHP反序列化漏洞.pdf

    在实际的安全分析中,我们需要关注以下几个方面: 1. **查找可控制的序列化数据源**:确定哪些用户输入或外部数据会被用于反序列化。 2. **识别易受攻击的类和方法**:分析代码以找出可能被恶意触发的魔术方法或...

    PHP从入门到精通3th

    《PHP从入门到精通3th》可能会包含几个完整的项目案例,让读者通过实际操作来巩固所学知识。这些项目可能涉及小型博客系统、在线商店或者其他类型的Web应用。通过这些实践,读者可以学习到如何规划项目结构、编写...

Global site tag (gtag.js) - Google Analytics