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 手机归属地查询 api
Feb 08 PHP
PHP下操作Linux消息队列完成进程间通信的方法
Jul 24 PHP
网站用php实现paypal整合方法
Nov 28 PHP
解析php通过cookies获取远程网页的指定代码
Jun 25 PHP
php中sprintf与printf函数用法区别解析
Feb 17 PHP
php实现求相对时间函数
Jun 15 PHP
php无法连接mysql数据库的正确解决方法
Jul 01 PHP
基于PHP微信红包的算法探讨
Jul 21 PHP
PHP基于简单递归函数求一个数阶乘的方法示例
Apr 26 PHP
PHP编程计算文件或数组中单词出现频率的方法
May 22 PHP
PHP实现的mysql主从数据库状态检测功能示例
Jul 20 PHP
PHP html_entity_decode()函数讲解
Feb 25 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
Yii使用DbTarget实现日志功能的示例代码
2020/07/21 PHP
javascript循环变量注册dom事件 之强大的闭包
2010/09/08 Javascript
基于jQuery的图片左右无缝滚动插件
2012/05/23 Javascript
基于JQuery的类似新浪微博展示信息效果的代码
2012/07/23 Javascript
JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法
2014/11/03 Javascript
js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)
2015/07/18 Javascript
jQuery+css实现的时钟效果(兼容各浏览器)
2016/01/27 Javascript
微信小程序分享功能之按钮button 边框隐藏和点击隐藏
2018/06/14 Javascript
JavaScript实现仿Clock ISO时钟
2018/06/29 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
2019/05/09 Javascript
js 将线性数据转为树形的示例代码
2019/05/28 Javascript
vue 实现Web端的定位功能 获取经纬度
2019/08/08 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
2020/04/01 Javascript
JS监听组合按键思路及实现过程
2020/04/17 Javascript
vue过滤器实现日期格式化的案例分析
2020/07/02 Javascript
vue 公共列表选择组件,引用Vant-UI的样式方式
2020/11/02 Javascript
python使用心得之获得github代码库列表
2014/06/25 Python
跟老齐学Python之再深点,更懂list
2014/09/20 Python
python编写简易聊天室实现局域网内聊天功能
2018/07/28 Python
python获取服务器响应cookie的实例
2018/12/28 Python
PyQt5笔记之弹出窗口大全
2019/06/20 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
2019/08/08 Python
Python partial函数原理及用法解析
2019/12/11 Python
Python任务自动化工具tox使用教程
2020/03/17 Python
Pycharm修改python路径过程图解
2020/05/22 Python
简单的Python人脸识别系统
2020/07/14 Python
python中取绝对值简单方法总结
2020/07/24 Python
50个强大璀璨的CSS3/JS技术运用实例
2010/02/27 HTML / CSS
学生打架检讨书
2014/02/14 职场文书
大专毕业生求职信
2014/07/05 职场文书
婚内房产协议书范本
2014/10/02 职场文书
2014年妇产科工作总结
2014/12/08 职场文书
2015年收银工作总结范文
2015/04/01 职场文书
导游词之日月潭
2019/11/05 职场文书
USB TYPE-C 或将成为所有智能手机充电标准
2022/04/21 数码科技
python库Tsmoothie模块数据平滑化异常点抓取
2022/06/10 Python