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 相关文章推荐
我常用的几个类
Oct 09 PHP
PHP 根据IP地址控制访问的代码
Apr 22 PHP
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
Jan 19 PHP
PHP5各个版本的新功能和新特性总结
Mar 16 PHP
ThinkPHP中的常用查询语言汇总
Aug 22 PHP
PHP获取youku视频真实flv文件地址的方法
Dec 23 PHP
详解php比较操作符的安全问题
Dec 03 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
Dec 07 PHP
详解PHP的Yii框架的运行机制及其路由功能
Mar 17 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
Nov 15 PHP
laravel 5.3 单用户登录简单实现方法
Oct 14 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
Apr 02 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中取得image按钮传递的name值
2006/10/09 PHP
PHP Google的translate API代码
2008/12/10 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
2016/04/26 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
PHP微信网页授权的配置文件操作分析
2019/05/29 PHP
在Javascript中定义对象类别
2006/12/22 Javascript
NodeJs中的非阻塞方法介绍
2012/06/05 NodeJs
js批量设置样式的三种方法不推荐使用with
2013/02/25 Javascript
仿谷歌主页js动画效果实现代码
2013/07/14 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
2013/09/22 Javascript
node.js中的fs.futimes方法使用说明
2014/12/17 Javascript
JavaScript使用addEventListener添加事件监听用法实例
2015/06/01 Javascript
轻松掌握JavaScript中介者模式
2016/08/26 Javascript
微信小程序  Mustache语法详细介绍
2016/10/27 Javascript
xcode中获取js文件的路径方法(推荐)
2016/11/05 Javascript
JS实现图片垂直居中显示小结
2016/12/13 Javascript
AngularJS表格样式简单设置方法示例
2017/03/03 Javascript
详解基于Node.js的微信JS-SDK后端接口实现代码
2017/07/15 Javascript
js实现前端图片上传即时预览功能
2017/08/02 Javascript
使用element-ui的el-menu导航选中后刷新页面保持当前选中状态
2019/07/19 Javascript
js实现带积分弹球小游戏
2020/07/21 Javascript
Python实现获取网站PR及百度权重
2015/01/21 Python
Python中的rjust()方法使用详解
2015/05/19 Python
对sklearn的使用之数据集的拆分与训练详解(python3.6)
2018/12/14 Python
Python字符串的常见操作实例小结
2019/04/08 Python
python实现猜数游戏
2020/03/27 Python
Python列表去重复项的N种方法(实例代码)
2020/05/12 Python
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/09/18 面试题
计算机专业个人简短的自我评价
2013/10/23 职场文书
一句话工作感言
2014/03/01 职场文书
原料仓仓管员岗位职责
2014/07/08 职场文书
教师学习八项规定六项禁令思想汇报
2014/09/27 职场文书
大学生团支书竞选稿
2015/11/21 职场文书
python3实现常见的排序算法(示例代码)
2021/07/04 Python
php png失真的原因及解决办法
2021/10/24 PHP
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
2022/05/04 Python