php魔法函数与魔法常量使用介绍


Posted in PHP onJuly 23, 2017

php 魔术函数

1。__construct()

实例化对象时被调用,
当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。

2。__destruct()
当删除一个对象或对象操作终止时被调用。

3。__call()
对象调用某个方法,
若方法存在,则直接调用;
若不存在,则会去调用__call函数。

4。__get()
读取一个对象的属性时,
若属性存在,则直接返回属性值;
若不存在,则会调用__get函数。

5。__set()
设置一个对象的属性时,
若属性存在,则直接赋值;
若不存在,则会调用__set函数。

6。__toString()
打印一个对象的时被调用。如echo $obj;或print $obj;

7。__clone()
克隆对象时被调用。如:$t=new Test();$t1=clone $t;

8。__sleep()
serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。

9。__wakeup()
unserialize时被调用,做些对象的初始化工作。

10。__isset()
检测一个对象的属性是否存在时被调用。如:isset($c->name)。

11。__unset()
unset一个对象的属性时被调用。如:unset($c->name)。

12。__set_state()
调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。

13。__autoload()
实例化一个对象时,如果对应的类不存在,则该方法被调用。

php 魔术常量

1。__LINE__
返回文件中的当前行号。

2。__FILE__
返回文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径,而在此之前的版本有时会包含一个相对路径。

3。__FUNCTION__
返回函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

4。__CLASS__
返回类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

5。__METHOD__
返回类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。

 (1)初识魔术方法
Php5.0发布以来为我们提供了很多面向对象的特性,尤其是为我们提供了好多易用的魔术方法,这些魔术方法可以让我们简化我们的编码,更好的设计我们的系统。今天我们就来认识下php5.0给我们提供的魔术方法。

php使用魔法函数和不使用魔法函数比较

/**
* use magic 0.31868386268616s
* not use magic 0.11876797676086s
*/
class Test {
  private $varstr = "123";

  function __get($name) {
    return $this->varstr;
  }
}

function microtime_float()
{
  list($usec, $sec) = explode(" ", microtime());
  return ((float)$usec + (float)$sec);
}

$time_start = microtime_float();

$i = 0;
while ($i<100000) {
  $i++;
  $t = new Test();
  $t->varstr;
}

$time_end = microtime_float();
$time = $time_end - $time_start;

echo "Did nothing in $time seconds\n";

建议尽量少用PHP魔法函数

PHP 相关文章推荐
利用PHP实现与ASP Banner组件相似的类
Oct 09 PHP
php操作xml
Oct 27 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
Jun 09 PHP
PHP实现事件机制的方法
Jul 10 PHP
PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法
Apr 01 PHP
php简单压缩css样式示例
Sep 22 PHP
PHP  Yii清理缓存的实现方法
Nov 10 PHP
PHP经典实用正则表达式小结
May 04 PHP
php实现评论回复删除功能
May 23 PHP
php如何修改SESSION的生存存储时间的实例代码
Jul 05 PHP
PHP简单实现二维数组的矩阵转置操作示例
Nov 24 PHP
php DES加密算法实例分析
Sep 18 PHP
php curl上传、下载、https登陆实现代码
Jul 23 #PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 #PHP
laravel自定义分页效果
Jul 23 #PHP
PHP批量删除jQuery操作
Jul 23 #PHP
PHP mysqli事务操作常用方法分析
Jul 22 #PHP
PHP实现mysqli批量执行多条语句的方法示例
Jul 22 #PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
Jul 22 #PHP
You might like
使用数据库保存session的方法
2006/10/09 PHP
php之readdir函数用法实例
2014/11/13 PHP
PHP使用ActiveMQ实例
2018/02/05 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
分享27款非常棒的jQuery 表单插件
2011/03/28 Javascript
js substr、substring和slice使用说明小记
2011/09/15 Javascript
如何实现textarea里的不同文本显示不同颜色
2014/01/20 Javascript
js实现日期级联效果
2014/01/23 Javascript
JavaScript AOP编程实例
2015/06/16 Javascript
javascript背景时钟实现方法
2015/06/18 Javascript
AngularJS基础教程之简单介绍
2015/09/27 Javascript
简单实现jQuery进度条轮播实例代码
2016/06/20 Javascript
微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
2016/12/14 Javascript
微信小程序 图片加载(本地,网路)实例详解
2017/03/10 Javascript
使用Vue开发一个实时性时间转换指令
2018/01/17 Javascript
Vue2.0结合webuploader实现文件分片上传功能
2018/03/09 Javascript
react native 获取地理位置的方法示例
2018/08/28 Javascript
小程序云开发如何实现图片上传及发表文字
2019/05/17 Javascript
node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例
2019/12/23 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
[02:11]2016国际邀请赛中国区预选赛全程回顾
2016/07/01 DOTA
python通过smpt发送邮件的方法
2015/04/30 Python
Python中类的初始化特殊方法
2017/12/01 Python
Python制作exe文件简单流程
2019/01/24 Python
python requests库爬取豆瓣电视剧数据并保存到本地详解
2019/08/10 Python
opencv3/C++图像像素操作详解
2019/12/10 Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
2020/05/19 Python
Javascript 高级手势使用介绍
2013/04/21 HTML / CSS
英国100%防污和防水的靴子:Muck Boot Company
2020/09/08 全球购物
C#面试题
2016/05/06 面试题
企业党员个人自我评价
2014/09/20 职场文书
暑期家教宣传单
2015/07/14 职场文书
《分一些蚊子进来》读后感3篇
2020/01/09 职场文书
详解CSS3.0(Cascading Style Sheet) 层叠级联样式表
2021/07/16 HTML / CSS
Python Django模型详解
2021/10/05 Python
CSS 左边固定宽右边自适应的6种方法
2022/05/15 HTML / CSS