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执行类外部不可访问的属性
php常用的魔术方法的更多相关文章
- php面向对象类中常用的魔术方法
php面向对象类中常用的魔术方法 1.__construct():构造方法,当类被实例化new $class时被自动调用的方法,在类的继承中可以继承与覆盖该方法,例: //__construct( ...
- PHP中常用的魔术方法
我们在PHP中经常用到魔术方法,像构造方法,析构方法等等魔术变量,下面总结一下一些常用的魔术变量: __construct(),__destruct(),__clone(),__autoload(), ...
- PHP序列化、反序列化常用的魔术方法
__wakeup() //使用unserialize时触发__sleep() //使用serialize时触发__destruct() //对象被销毁时触发__call() //在对象上下文中调用不可 ...
- php中的重载以及几个常用的魔术方法示例
在面向对象语言中,有一个很重要的概念——overload,即重载.所谓重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同.但是,在php中,这个概念跟大多面向对象语言中的“ ...
- PHP常用的魔术方法及规则
1. __construct 具有构造函数的类会在每次创建新对象时先调用此方法;初始化工作执行.2. __desstruct 对象的所有引用都被删除或者当对象被显式销毁时执行.3.__call()在对 ...
- PHP面向对象中常用的关键字和魔术方法
PHP面向对象中常用的关键字 final 1.final不能修饰成员属性(类中常量不是用这个关键字) 2.final只能修饰类和方法 作用: 使用fi ...
- php中的常用魔术方法总结
以下是对php中的常用魔术方法进行了详细的总结介绍,需要的朋友可以过来参考下 常用的魔术方法有:__Tostring () __Call() __autoLoad() __ clone() __GET ...
- PHP之魔术方法
PHP中的魔术方法: PHP的魔术方法主要是在特定的条件下执行相应的魔术方法.这和很多框架中的钩子函数有些类似,不同的是,钩子函数是在生命周期的某个周期内自动执行,而魔术方法是在触发某种条件下自动 ...
- Python 类的魔术方法
Python中类的魔术方法 在Python中以两个下划线开头的方法,__init__.__str__.__doc__.__new__等,被称为"魔术方法"(Magic method ...
随机推荐
- javascript Spline代码
代码是通过网上一个winform代码中提取修改而来的.后转为javascript 版本. /* points = new Array(); points.push({x:1,y:2}); */ fun ...
- symfony学习笔记2—纯的PHP代码和symfony的区别
Symfony vs 纯PHP为啥symfony比普通的php文件访问要好?这一章我们写一个简单的php文件项目,然后组织它,你会发现为什么web应用会发展到现在这个样子.最后我们将学习symfony ...
- ZT 安卓手机的安全性 prepare for Q
如何增强安卓手机的安全性?安卓的安全性太低了!!! 众所周知,安卓手机是非常容易破解的,刷过机的人都知道,不管你之前在手机怎么设置密码,只要进入recovery清空使用记录,手机就会恢复出厂设置,到时 ...
- 10条Linux 命令了解服务器当前性能
参考:http://www.infoq.com/cn/news/2015/12/linux-performance 1. uptime 如果电脑运行缓慢,执行 uptime 可以大致查看Linux服务 ...
- MySQL主从.md
MySQL Replication 概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它 ...
- Sequelize-nodejs-8-Transactions
Transactions事务 Sequelize supports two ways of using transactions: Sequelize支持两种使用transactions的方法 One ...
- java读入和输出
一: 在python里直接使用input函数就可以,在java里,需要使用Scanner类,用System.in进行初始化,获取用户输入可以用nextLine获取字符串,nextInt获取整形数据. ...
- POJ 1321 棋盘问题(非常经典的dfs,入门题)
棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 66277 Accepted: 31639 Descriptio ...
- 第12章 GPIO输入-按键检测—零死角玩转STM32-F429系列
第12章 GPIO输入—按键检测 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fi ...
- Spring的简单应用与基本原理
一:重要概念理解 Spring很简单,一定不要想得太复杂,只是有些东西很拗口而已 1:IOC(控制反转) 概念:利用反射的原理将对象创建的权利交给了Spring,Spring在运行的时候根据配置文件( ...