`

讲讲php的魔术方法

    博客分类:
  • Php
阅读更多
PHP5.0后,php面向对象提成更多方法,使得php更加的强大!!
一些在PHP叫魔术方法的函数,在这里介绍一下:其实在一般的应用中,我们都需要用到他们!!

1.__construct() 当实例化一个对象的时候,这个对象的这个方法首先被调用。


class Test { function __construct() { echo "before"; } } $t = new Test(); 


输出是:

start
我们知道php5对象模型 和类名相同的函数是类的构造函数,那么如果我们同时定义构造函数和__construct()方法的话,php5会默认调用构造函数而不会调用__construct()函数,所以__construct()作为类的默认的构造函数

2.__destruct() 当删除一个对象或对象操作终止的时候,调用该方法。

class Test { function __destruct() { echo "end"; } } $t = new Test();将会输出end 


我们就可以在对象操作结束的时候进行释放资源之类的操作

3.__get() 当试图读取一个并不存在的属性的时候被调用。


如果试图读取一个对象并不存在的属性的时候,PHP就会给出错误信息。如果在类里添加__get方法,并且我们可以用这个函数实现类似java中反射的各种操作。

class Test { public function __get($key) { echo $key . " 不存在"; } } $t = new Test(); echo $t->name; 就会输出:name 不存在 


4.__set() 当试图向一个并不存在的属性写入值的时候被调用。

class Test { public function __set($key,$value) { echo '对'.$key . "附值".$value; } } $t = new Test(); $t->name = "aninggo"; 就会输出:对 name 附值 aninggo 




5.__call() 当试图调用一个对象并不存在的方法时,调用该方法。

class Test { public function __call($Key, $Args) { echo "您要调用的 {$Key} 方法不存在。你传入的参数是:" . print_r($Args, true); } } $t = new Test(); $t->getName(aning,go); 


程序将会输出:
您要调用的 getName 方法不存在。参数是:Array 
( 
[0] => aning 
[1] => go 
) 


6.__toString() 当打印一个对象的时候被调用


这个方法类似于java的toString方法,当我们直接打印对象的时候回调用这个函数

class Test { public function __toString() { return "打印 Test"; } } $t = new Test(); echo $t;

运行echo $t;的时候,就会调用$t->__toString();从而输出
打印 Test

7.__clone() 当对象被克隆时,被调用

class Test { public function __clone() { echo "我被复制了!"; } }$t = new Test(); $t1 = clone $t;程序输出:我被克隆了!8.顺便介绍下php5中提供的几个非常COOl的实验性函数
分享到:
评论

相关推荐

    PHP教程全部PPT(共70讲)

    - 学习如何定义类,创建对象,以及使用魔术方法。 第三十一讲至第三十五讲:错误与异常处理 - 理解PHP中的错误类型,学习如何处理运行时错误。 - 引入异常处理机制,学习try-catch-finally结构。 第三十六讲至第四...

    PHP100视频教程100讲源码

    080和081讲可能涉及到PHP的高级特性,如PHP的命名空间(namespaces)、自动加载(autoloading)和PHP的魔术方法(magic methods),这些都是现代PHP开发中不可或缺的部分,可以提升代码的组织和复用性。 通过学习...

    (第25讲) PHP面向对象开发的学习(九)

    在创建对象时,我们可以通过构造函数(constructor)来初始化对象的状态,或者使用魔术方法`__set()`和`__get()`动态设置和获取对象属性。此外,可以使用`__isset()`和`__unset()`来检查属性是否存在或删除它。这些...

    PHP教程全部PPT-共57讲

    同时,还讨论了接口和抽象类的使用,以及魔术方法的机制。 第二十六讲至第三十五讲涉及文件操作和错误处理。这部分内容包括文件的读写、目录操作、上传下载功能的实现,以及错误和异常处理的策略,如何使用try-...

    韩顺平PHP(全149讲)课堂笔记

    7. **PHP魔术方法**:理解__construct、__destruct、__get、__set等魔术方法的作用和使用场景。 【PHP高级篇】 1. **PHP性能优化**:讨论PHP性能瓶颈及优化策略,如缓存技术、代码优化等。 2. **PHP框架**:如...

    php100的经典入门教程

    最后一讲可能涉及PHP的高级特性,如面向对象编程(类、对象、继承、封装和多态)、命名空间、魔术方法,或者一些实用的PHP扩展如PDO(PHP Data Objects)用于更安全的数据库操作。 通过这个系列教程的学习,初学者...

    (第19讲) PHP面向对象开发的学习(三)

    同时,这两个方法也是PHP魔术方法的一部分,它们在特定情况下自动调用,使得我们可以自定义对象行为。 在学习完封装的概念后,可以进一步探索PHP面向对象的其他特性,如继承、接口、抽象类、构造函数、析构函数、...

    php100教程学习笔记及面试题

    这部分内容还可能涵盖命名空间、魔术方法、反射、以及PHP的内置对象模型如PDO用于数据库操作,以及Session和Cookie的使用,这些都是PHP开发中不可或缺的部分。 然后,《PHP100教程96~112讲.docx》可能会讨论更高级...

    PHP100视频教程22:PHP面向对象开发的学习(六).rar

    **魔术方法**是PHP提供的一组特殊方法,如`__construct`(构造方法)、`__destruct`(析构方法)、`__get`和`__set`(用于访问私有或受保护的属性),这些方法在特定情况下自动调用,增强了代码的灵活性。...

    PHP从入门到精通完整笔记

    在高级主题中,可能会涵盖PHP的魔术方法、命名空间、Composer依赖管理工具,以及PHP的最新特性。同时,可能会介绍一些常用的PHP框架,如Laravel或Symfony,以及如何利用它们加速开发进程。 总之,《PHP从入门到精通...

    PHP100视频教程23:PHP面向对象开发的学习(七).rar

    8. **魔术方法** - PHP提供了一系列以双下划线`__`开头的特殊方法,如`__get()`, `__set()`, `__call()`, 等,它们在特定条件下自动调用,帮助处理一些特殊操作。 9. **命名空间** - 命名空间(Namespace)是PHP ...

    PHP完全自学教程(全篇) 从基本讲到高级 由浅入深

    - **魔术方法**: 了解如`__construct()`, `__destruct()`, `__get()`, `__set()`等特殊方法的作用。 ### 7. 错误与异常处理 - **错误报告**: 设置错误报告级别(`error_reporting()`)和错误处理函数(`set_error_...

    PHP5.3入门经典(Beginning PHP 5.3)源码+中文PDF+英文PDF

    5. **其他增强**:还包括对Suhosin安全扩展的支持、改进的数组操作、新的魔术常量、更好的性能优化等。 书中不仅会介绍这些核心概念,还会涉及基本的语法、变量、数据类型、流程控制、函数、类与对象、文件系统操作...

    PHP100视频教程20:PHP面向对象开发的学习(四)

    以及**魔术方法**,它们在特定情况下自动调用。 此外,视频教程可能还会涉及**接口**(Interface),它定义了一组方法的签名,类可以实现接口以确保遵循特定的约定。接口在多态性和设计模式中扮演着重要角色。 **...

    Php100-21-30

    10. **第30讲:PHP高级话题** - 最后一讲涵盖了PHP的一些高级主题,可能包括魔术常量、命名空间、设计模式、性能优化以及PHP与第三方库的集成。 通过这一系列的深入学习,读者将能够熟练地运用PHP进行Web开发,从...

    php教程全部ppt

    7. **类与对象的高级特性**:学习抽象类、接口、魔术方法、静态属性和方法、命名空间、Traits等。 8. **对象实例化与克隆**:理解单例模式,了解如何实例化类和克隆对象。 9. **设计模式**:介绍常见的设计模式,...

    PHP100视频教程24:PHP面向对象开发的学习(八).rar

    10. **魔术方法**:PHP提供了一系列以双下划线`__`开头的特殊方法,如`__get()`、`__set()`、`__call()`等,它们在特定情况下自动调用,帮助处理对象的内部操作。 通过这个视频教程,学习者应该能够掌握如何在实际...

    深入PHP:面向对象、模式与实践(第三版)高清PDF和完整源码.rar.rar

    此外,书中还讨论了接口、抽象类以及魔术方法等高级特性,帮助开发者熟练掌握PHP的OOP语法。 2. 设计模式 设计模式是解决常见软件设计问题的经验总结,如单例模式、工厂模式、观察者模式等。书中详细解析了多种...

    代码审计之php配置文件1

    为什么要讲PHP配置文件,因为不同PHP配置文件意味着不同的PHP环境,而有些漏洞可以在特定PHP环境中执行,在其他PHP环境则不行。魔术引号,自动对cooki

    php构造函数与析构函数

    进一步来讲,PHP中的其他魔术方法还包括__set()、__get()、__isset()、__unset()等,它们分别在属性的设置、获取、检测以及销毁时被自动调用,使得对象属性的管理变得更加方便和安全。 在PHP中,除了构造函数和析构...

Global site tag (gtag.js) - Google Analytics