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 相关文章推荐
第十一节--重载
Nov 16 PHP
php为什么选mysql作为数据库? Mysql 创建用户方法
Jul 02 PHP
php程序的国际化实现方法(利用gettext)
Aug 14 PHP
PHP动态创建Web站点的方法
Aug 14 PHP
php小经验:解析preg_match与preg_match_all 函数
Jun 29 PHP
php curl模拟post请求小实例
Nov 13 PHP
CodeIgniter输出中文乱码的两种解决办法
Jun 12 PHP
php缩放gif和png图透明背景变成黑色的解决方法
Oct 14 PHP
php注册登录系统简化版
Dec 28 PHP
Laravel中log无法写入问题的解决
Jun 17 PHP
ThinkPHP防止重复提交表单的方法实例分析
May 10 PHP
php unlink()函数使用教程
Jul 12 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中防止恶意刷新页面的代码小结
2012/10/31 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
2014/11/22 PHP
php实现用于验证所有类型的信用卡类
2015/03/24 PHP
php封装好的人民币数值转中文大写类
2015/12/20 PHP
php版微信公众号自定义分享内容实现方法
2016/09/22 PHP
PHP数据库操作三:redis用法分析
2017/08/16 PHP
Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()
2019/10/23 PHP
javascript下有关dom以及xml节点访问兼容问题
2007/11/26 Javascript
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
js窗口关闭提示信息(兼容IE和firefox)
2015/10/23 Javascript
全面解析JavaScript中的valueOf与toString方法(推荐)
2016/06/14 Javascript
layer弹出层中H5播放器全屏出错的解决方法
2017/02/21 Javascript
Bootstrap 表单验证formValidation 实现表单动态验证功能
2017/05/17 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
详解Vue 如何监听Array的变化
2019/06/06 Javascript
js原生map实现的方法总结
2020/01/19 Javascript
JS面向对象编程实现的拖拽功能案例详解
2020/03/03 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
2020/11/16 Javascript
Python深入学习之闭包
2014/08/31 Python
Python随机读取文件实现实例
2017/05/25 Python
Python 读取指定文件夹下的所有图像方法
2018/04/27 Python
Tensorflow使用tfrecord输入数据格式
2018/06/19 Python
python在新的图片窗口显示图片(图像)的方法
2019/07/11 Python
Python根据服务获取端口号的方法
2019/09/25 Python
Python Flask上下文管理机制实例解析
2020/03/16 Python
django 模型字段设置默认值代码
2020/07/15 Python
python动态规划算法实例详解
2020/11/22 Python
CSS3教程(6):创建网站多列
2009/04/02 HTML / CSS
管理部部长岗位职责
2013/12/05 职场文书
《花木兰》教学反思
2014/04/09 职场文书
护士上岗前培训自我鉴定
2014/04/20 职场文书
竞选班干部演讲稿
2014/04/24 职场文书
生态养殖创业计划书
2014/05/06 职场文书
公司租车协议书
2015/01/29 职场文书
2016年助残日旅游活动总结
2016/04/01 职场文书
redis实现共同好友的思路详解
2021/05/26 Redis