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 相关文章推荐
利用static实现表格的颜色隔行显示的代码
Sep 02 PHP
PHP 变量定义和变量替换的方法
Jul 30 PHP
phpMyAdmin 链接表的附加功能尚未激活的问题
Aug 01 PHP
php数组函数序列之in_array() - 查找数组中是否存在指定值
Nov 07 PHP
php插入中文到sqlserver 2008里出现乱码的解决办法分享
Jul 19 PHP
PHP与Java进行通信的实现方法
Oct 21 PHP
thinkphp3.x中session方法的用法分析
May 20 PHP
PHP4和PHP5版本下解析XML文档的操作方法实例分析
May 20 PHP
Yii框架实现记录日志到自定义文件的方法
May 23 PHP
Yii 2.0在Grid中格式化时间方法示例
Jun 06 PHP
PHP常用日期加减计算方法实例小结
Jul 31 PHP
laravel开发环境homestead搭建过程详解
Jul 03 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
php HTML无刷新提交表单
2016/04/05 PHP
浅谈laravel 5.6 安装 windows上使用composer的安装过程
2019/10/18 PHP
FireFox与IE 下js兼容触发click事件的代码
2008/11/20 Javascript
Jquery ThickBox插件使用心得(不建议使用)
2010/09/08 Javascript
js的表单操作 简单计算器
2011/12/29 Javascript
JQuery中extend使用介绍
2014/03/13 Javascript
JS实现可直接显示网页代码运行效果的HTML代码预览功能实例
2015/08/06 Javascript
jQuery焦点图切换特效代码分享
2015/09/15 Javascript
JavaScript动态生成二维码图片
2016/04/20 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
2016/09/22 Javascript
微信小程序 欢迎界面开发的实例详解
2016/11/30 Javascript
addEventListener()与removeEventListener()解析
2017/04/20 Javascript
Angular 2.x学习教程之结构指令详解
2017/05/25 Javascript
判断div滑动到底部的scroll实例代码
2017/11/15 Javascript
详解Angular5路由传值方式及其相关问题
2018/04/28 Javascript
VUE使用axios调用后台API接口的方法
2020/08/03 Javascript
Python pickle模块用法实例
2015/04/14 Python
Python使用正则表达式获取网页中所需要的信息
2018/01/29 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
2018/05/15 Python
Python2和Python3中urllib库中urlencode的使用注意事项
2018/11/26 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
2019/06/19 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
详解win10下pytorch-gpu安装以及CUDA详细安装过程
2021/01/28 Python
Lulu & Georgia官方网站:购买地毯、家具、抱枕、壁纸、床上用品等
2018/03/19 全球购物
夏洛特和乔治婴儿和儿童时装精品店:Charlotte and George
2018/06/06 全球购物
说出一些常用的类,包,接口
2014/09/22 面试题
电子信息科学专业自荐信
2014/01/30 职场文书
《兰亭集序》教学反思
2014/02/11 职场文书
2014年小学元旦活动方案
2014/02/12 职场文书
活动总结格式范文
2014/04/26 职场文书
商业企业管理专业求职信
2014/07/10 职场文书
创建绿色社区汇报材料
2014/08/22 职场文书
2015年文秘个人工作总结
2015/10/14 职场文书
Python Socket编程详解
2021/04/25 Python
JS 4个超级实用的小技巧 提升开发效率
2021/10/05 Javascript
解决Windows Server2012 R2 无法安装 .NET Framework 3.5
2022/04/29 Servers