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+mysql 实现身份验证代码
Mar 24 PHP
在WAMP环境下搭建ZendDebugger php调试工具的方法
Jul 18 PHP
php中用加号与用array_merge合并数组的区别深入分析
Jun 03 PHP
基于php和mysql的简单的dao类实现crud操作功能
Jan 27 PHP
浅谈PHP解析URL函数parse_url和parse_str
Nov 11 PHP
php目录遍历函数opendir用法实例
Nov 20 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
Dec 16 PHP
php结合安卓客户端实现查询交互实例
May 05 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
Jul 21 PHP
PHP会员找回密码功能的简单实现
Sep 05 PHP
php实现评论回复删除功能
May 23 PHP
PHP的PDO大对象(LOBs)
Jan 27 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&amp;java(三)
2006/10/09 PHP
关于PHP堆栈与列队的学习
2013/06/21 PHP
ThinkPHP框架设计及扩展详解
2014/11/25 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
2019/02/15 PHP
javascript实现动态增加删除表格行(兼容IE/FF)
2007/04/02 Javascript
一些常用的JS功能函数代码
2009/06/23 Javascript
js转化毫秒为时间格式代码
2014/04/10 Javascript
javascript的document.referrer浏览器支持、失效情况总结
2014/07/18 Javascript
轻松实现Bootstrap图片轮播
2020/04/20 Javascript
checkbox批量选中,获取选中项的值的简单实例
2016/06/28 Javascript
基于input框覆盖掉数字英文的实例讲解
2017/07/21 Javascript
vue.js路由跳转详解
2017/08/28 Javascript
createObjectURL方法实现本地图片预览
2019/09/30 Javascript
[38:30]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场2
2014/05/24 DOTA
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
2018/05/02 Python
Python可变和不可变、类的私有属性实例分析
2019/05/31 Python
Python实现Mysql数据统计及numpy统计函数
2019/07/15 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
2020/05/11 Python
Django获取model中的字段名和字段的verbose_name方式
2020/05/19 Python
css3实现超炫风车特效
2014/11/12 HTML / CSS
介绍一下游标
2012/01/10 面试题
程序员经常用到的UNIX命令
2015/04/13 面试题
钳工实习自我鉴定
2013/09/19 职场文书
社团成立邀请函
2014/01/08 职场文书
学生安全责任书模板
2014/07/25 职场文书
国际贸易实训报告
2014/11/05 职场文书
2014年社区综治工作总结
2014/11/17 职场文书
2015年初一班主任工作总结
2015/05/13 职场文书
单位同意报考证明
2015/06/17 职场文书
小学运动会入场词
2015/07/18 职场文书
2015年工会工作总结范文
2015/07/23 职场文书
uniapp开发小程序的经验总结
2021/04/08 Javascript
Python中zipfile压缩包模块的使用
2021/05/14 Python
html+css实现文字折叠特效实例
2021/06/02 HTML / CSS
mysql事务隔离级别详情
2021/10/24 MySQL