PHP魔术方法使用
PHP魔术方法的使用
1、__get() 和 __set();
2、__call() 和 __callStatic();
3、__toString();
4、__invoke();
1、__get() 和 __set();
一个php类文件为 object.php:
Class Object {
private $array = array();
function __set($key , $value){
var_dump(__METHOOD__);
$this->array[$key] = $value;
}
function __get($key){
var_dump(__METHOOD__);
return $this->array[$key];
}
function __call($func,$param){
var_dump($func,$param);
return 'magic function';
}
static function __callStatic(){
var_dump($func,$param);
return 'magic static function';
}
}
当我们给一个没有的属性赋值时会自动调用__set();
输出一个没有的属性的时候会自动调用__get();
测试代码如下:
$obj = new Object();
$obj->title = 'zhangshan';
echo $obj->title;
会得到以下结果:
2、__call() 和 __callStatic();
当我们访问一个不存的方法时会自动调用__call();
echo $obj->test('Hello World',123);
会得到以下结果:
__callStatic()跟__call()大体相同只不过是针对static声明的方法
echo $obj::test('Hello World',123);
会得到以下结果:
PHP魔术方法使用的更多相关文章
- PHP基础知识之魔术方法
__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sle ...
- 前端学PHP之面向对象系列第二篇——魔术方法
× 目录 [1]构造方法 [2]析构方法 [3]不可访问属性[4]对象复制[5]字符串[6]对象不存在[7]自动加载类[8]串行化[9]函数调用 前面的话 php在面向对象部分有很多相关的魔术方法,这 ...
- PHP中的魔术方法(2)
1.__get.__set这两个方法是为在类和他们的父类中没有声明的属性而设计的__get( $property ) 当调用一个未定义的属性时访问此方法__set( $property, $value ...
- 魔术方法__sleep 和 __wakeup
感觉序列化和反序列化用得倒是比较少了,而json_encode和json_decode用得相对多,都是转化成串,进行入库.传输等.json更方便,但是序列化和反序列化结合这两个魔术方法使用倒还行< ...
- Python魔术方法-Magic Method
介绍 在Python中,所有以"__"双下划线包起来的方法,都统称为"Magic Method",例如类的初始化方法 __init__ ,Python中所有的魔 ...
- php魔术方法使用场景
php魔术方法-----__tostring(),__invoke,__call(),__callStatic ... __tostring(),__invoke() __tostring()方法是在 ...
- PHP中的魔术方法:__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toString, __set_state, __clone and __autoload
1.__get.__set 这两个方法是为在类和他们的父类中没有声明的属性而设计的: __get( $property ) 当调用一个未定义的属性时访问此方法: __set( $property, $ ...
- PHP 类中的魔术方法
定义: PHP类中以两个下画线“__”开头的方法被称为魔术方法. 分类: 例如:构造方法:__construct:析构方法:__destruct:动态重载:__set().__get().__call ...
- php中的魔术方法
__construct 构造器是一个魔术方法,当对象被实例化时它会被调用.在一个类声明时它常常是第一件做的事但是没得必要他也像其他任何方法在类中任何地方都可以声明,构造器也能像其他方法样继承.如果我们 ...
- PHP面向对象之魔术方法复习
魔术方法复习 2014-9-2 10:08:00 NotePad++ By jiancaigege 飞鸿影~========================= 1.__construct() 构造方法 ...
随机推荐
- 一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有 多少总跳法?
首先我们考虑最简单的情况:如果只有1 级台阶,那显然只有一种跳法,如果有2 级台阶,那就有两种跳的方法了:一种是分两次跳,每次跳1 级:另外一种就是一次跳2 级.现在我们再来讨论一般情况:我们把n 级 ...
- 【题解】HNOI2008GT考试
这题好难啊……完全不懂矩阵加速递推的我TAT 这道题目要求我们求出不含不吉利数字的字符串总数,那么我们有dp方程 : dp[i][j](长度为 i 的字符串,最长与不吉利数字前缀相同的后缀长度为 j ...
- [ZJOI2006]物流运输 DP 最短路
---题面--- 题解: 设f[i]表示到第i天的代价,cost[i][j]表示第i天到第j天采取同一种方案的最小代价.那么转移就很明显了,直接$n^2$枚举即可. 所以问题就变成了怎么获取cost数 ...
- Visio中设置自定义属性的值
ShapeSheet中User-Define Cells中Prompt格. 帮助解释为:为用户定义的单元格指定说明性提示或注释.应用程序自动将提示文本用引号 (" ") 引起来,以 ...
- Android开发注意点小记
暂时主要讨论以下几点: Android引用外部包,报NoClassDefFoundError异常崩溃 同名包引用关系问题 程序图标 9patch图片素材 Android引用外部包,程序报java.la ...
- POJ3436:ACM Computer Factory(最大流)
ACM Computer Factory Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9963 Accepted: 3 ...
- js用for of 遍历数组
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- TCP之close_wait
TCP之close_wait 浏览:3697次 出处信息 /* * @author: ahuaxuan * @date: 2010-4-30 */ 查看各状态连接数: netstat -n | aw ...
- Install the AWS Command Line Interface on Linux
Install the AWS Command Line Interface on Linux You can install the AWS Command Line Interface and i ...
- CSS样式实现溢出超出DIV边框宽度高度的内容自动隐藏方法
CSS样式实现溢出超出DIV边框宽度高度的内容自动隐藏方法 平时我们布局时候,有的文字内容多了会超过溢出我们限制的高度,有的图片会撑破DIV,让网页错位变乱. 这样我们就需要解决如何使用CSS来超出设 ...