__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执行类外部不可访问的属性

php常用的魔术方法的更多相关文章

  1. php面向对象类中常用的魔术方法

    php面向对象类中常用的魔术方法   1.__construct():构造方法,当类被实例化new $class时被自动调用的方法,在类的继承中可以继承与覆盖该方法,例: //__construct( ...

  2. PHP中常用的魔术方法

    我们在PHP中经常用到魔术方法,像构造方法,析构方法等等魔术变量,下面总结一下一些常用的魔术变量: __construct(),__destruct(),__clone(),__autoload(), ...

  3. PHP序列化、反序列化常用的魔术方法

    __wakeup() //使用unserialize时触发__sleep() //使用serialize时触发__destruct() //对象被销毁时触发__call() //在对象上下文中调用不可 ...

  4. php中的重载以及几个常用的魔术方法示例

    在面向对象语言中,有一个很重要的概念——overload,即重载.所谓重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同.但是,在php中,这个概念跟大多面向对象语言中的“ ...

  5. PHP常用的魔术方法及规则

    1. __construct 具有构造函数的类会在每次创建新对象时先调用此方法;初始化工作执行.2. __desstruct 对象的所有引用都被删除或者当对象被显式销毁时执行.3.__call()在对 ...

  6. PHP面向对象中常用的关键字和魔术方法

    PHP面向对象中常用的关键字 final        1.final不能修饰成员属性(类中常量不是用这个关键字)        2.final只能修饰类和方法 作用:            使用fi ...

  7. php中的常用魔术方法总结

    以下是对php中的常用魔术方法进行了详细的总结介绍,需要的朋友可以过来参考下 常用的魔术方法有:__Tostring () __Call() __autoLoad() __ clone() __GET ...

  8. PHP之魔术方法

      PHP中的魔术方法: PHP的魔术方法主要是在特定的条件下执行相应的魔术方法.这和很多框架中的钩子函数有些类似,不同的是,钩子函数是在生命周期的某个周期内自动执行,而魔术方法是在触发某种条件下自动 ...

  9. Python 类的魔术方法

    Python中类的魔术方法 在Python中以两个下划线开头的方法,__init__.__str__.__doc__.__new__等,被称为"魔术方法"(Magic method ...

随机推荐

  1. tomcat 开启远程debug

    修改 tomcat  目录下  /bin/catelina.sh #                   execution immediately after startup. Default is ...

  2. rss工具及资源

    使用的工具:reeder 资源: https://calayer.com https://github.com/SwiftOldDriver/iOS-Weekly/releases https://w ...

  3. android小游戏模版—重力感应

               好久没更新博客了,今天来谈谈android小游戏---重力感应,一般在游戏里运用的比較多,比方这类游戏有:神庙逃亡.极品飞车,平衡球.三围重力迷宫,重力赛车等. 首先什么是重力感 ...

  4. jQuery事件处理

    浏览器的事件模型 DOM第0级事件模型 Event实例 他的属性提供了关于当前正被处理的已触发事件的大量信息.这包括一些细节,比如在哪个元素上触发的事件.鼠标事件的坐标以及键盘事件中单击了哪个键. 事 ...

  5. 20155314 2016-2017-2 《Java程序设计》第1周学习总结

    20155314 2016-2017-2 <Java程序设计>第1周学习总结 学习目标 了解Java基础知识(已完成) 了解JVM.JRE与JDK,并下载.安装.测试JDK(已完成) 了解 ...

  6. C++——命名空间

    C++命名空间基本常识 所谓namespace,是指标识符的各种可见范围.C++标准程序库中的所有标识符都被定义于一个名为std的namespace中. 一 :<iostream>和< ...

  7. CANopen和DeviceNet有何异同

    >> 欢迎您,客人: 登录 | 注册 | 忘记密码 | 在线 | 搜索 | 帮助   DND开发论坛 ◇ DeviceNet技术讨论区 ◇ [返回] [讨论]CANopen和DeviceN ...

  8. Mac端 Open GL初探

    一.环境配置 1.创建macOS工程 2.添加OpenGL.framework和GLUT.framework两个系统库 3.拖入资源文件 如果libGLTools.a问价先拖入到工程其他位置,后再移到 ...

  9. C++ 动态内存

    原文:https://www.w3cschool.cn/cpp/cpp-dynamic-memory.html C++ 动态内存 了解动态内存在 C++ 中是如何工作的是成为一名合格的 C++ 程序员 ...

  10. 生死系列--WuJie

    WuJie,高中和中专时期的同学,篮球队的队友. 在高三时认识的,我们隔壁班的,但仅限于认识,并未打过交道.高中毕业后考在同一所学校,同一个班,象棋下的很好,喜欢打扑克牌,在班上任团支部书记. 球队时 ...