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 相关文章推荐
NT IIS下用ODBC连接数据库
Oct 09 PHP
用PHP获取Google AJAX Search API 数据的代码
Mar 12 PHP
浅谈php中mysql与mysqli的区别分析
Jun 10 PHP
PHP中判断变量为空的几种方法小结
Nov 12 PHP
PHP中Header使用的HTTP协议及常用方法小结
Nov 04 PHP
php短址转换实现方法
Feb 25 PHP
PHP+Mysql基于事务处理实现转账功能的方法
Jul 08 PHP
php版微信公众号自定义分享内容实现方法
Sep 22 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
Dec 08 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
Mar 13 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
Mar 31 PHP
解决laravel5.4下的group by报错的问题
Oct 16 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 字符串 小常识
2009/06/05 PHP
PHP新手入门学习方法
2011/05/08 PHP
深入Apache与Nginx的优缺点比较详解
2013/06/17 PHP
PHP利用REFERER根居访问来地址进行页面跳转
2013/09/28 PHP
PHP Callable强制指定回调类型的方法
2016/08/30 PHP
PHP生成短网址的思路以及实现方法的详解
2019/03/25 PHP
YII2框架中添加自定义模块的方法实例分析
2020/03/18 PHP
Prototype使用指南之dom.js
2007/01/10 Javascript
filemanage功能中用到的lib.js
2007/04/08 Javascript
初窥JQuery(一)jquery选择符 必备知识点
2010/11/25 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
Js Jquery创建一个弹出层可加载一个页面
2014/05/08 Javascript
JavaScript学习笔记之Function对象
2015/01/22 Javascript
Three.js学习之正交投影照相机
2016/08/01 Javascript
JS实现HTML表格排序功能
2016/08/05 Javascript
利用JS实现文字的聚合动画效果
2017/01/22 Javascript
有关JS中的0,null,undefined,[],{},'''''''',false之间的关系
2017/02/14 Javascript
浅谈sass在vue注意的地方
2017/08/10 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
2018/01/16 Javascript
three.js 入门案例详解
2018/01/23 Javascript
详解如何从零开始搭建Express+Vue开发环境
2018/07/17 Javascript
vue发送ajax请求详解
2018/10/09 Javascript
微信小程序个人中心的列表控件实现代码
2020/04/26 Javascript
微信小程序实现多选框功能的实例代码
2020/06/24 Javascript
vue项目,代码提交至码云,iconfont的用法说明
2020/07/30 Javascript
如何在vue中使用kindeditor富文本编辑器
2020/12/19 Vue.js
Python中with及contextlib的用法详解
2017/06/08 Python
django加载本地html的方法
2018/05/27 Python
Python实现的个人所得税计算器示例
2018/06/01 Python
本科毕业生自我鉴定
2013/11/02 职场文书
小区的门卫岗位职责
2014/10/01 职场文书
党员群众路线整改措施及今后努力方向
2014/10/28 职场文书
给老婆的检讨书(搞笑版)
2015/05/06 职场文书
担保书范文
2019/07/09 职场文书
python之django路由和视图案例教程
2021/07/26 Python
纯CSS如何禁止用户复制网页的内容
2021/11/01 HTML / CSS