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写的采集程序
Mar 16 PHP
PHP生成UTF8文件的方法
May 15 PHP
PHP daddslashes 使用方法介绍
Oct 26 PHP
php二维数组排序与默认自然排序的方法介绍
Apr 27 PHP
关于php支持分块与断点续传文件下载功能代码
May 09 PHP
PHP实现采集中国天气网未来7天天气
Oct 15 PHP
php的dl函数用法实例
Nov 06 PHP
Yii2增删改查之查询 where参数详细介绍
Aug 08 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
May 05 PHP
php 人员权限管理(RBAC)实例(推荐)
May 24 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
Aug 31 PHP
php学习笔记之mb_strstr的基本使用
Feb 03 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
介绍几个array库的新函数 php
2006/12/29 PHP
php异步多线程swoole用法实例
2014/11/14 PHP
php生成html文件方法总结
2014/12/01 PHP
thinkphp中session和cookie无效的解决方法
2014/12/19 PHP
php将字符串随机分割成不同长度数组的方法
2015/06/01 PHP
php实现微信小程序授权登录功能(实现流程)
2019/11/13 PHP
JS实现self的resend
2010/07/22 Javascript
jquery animate图片模向滑动示例代码
2011/01/26 Javascript
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
2011/04/06 Javascript
JQuery入门——事件切换之hover()方法应用介绍
2013/02/05 Javascript
jQuery中的编程范式详解
2014/12/15 Javascript
jQuery中addClass()方法用法实例
2015/01/05 Javascript
js的toUpperCase方法用法实例
2015/01/27 Javascript
JavaScript实现16进制颜色值转RGB的方法
2015/02/09 Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
2015/03/04 Javascript
javascript中基本类型和引用类型的区别分析
2015/05/12 Javascript
javascript实现可拖动变色并关闭层窗口实例
2015/05/15 Javascript
node.js 发布订阅模式的实例
2017/09/10 Javascript
基于 Vue.js 之 iView UI 框架非工程化实践记录(推荐)
2017/11/21 Javascript
vue项目中监听手机物理返回键的实现
2020/01/18 Javascript
python基础教程之获取本机ip数据包示例
2014/02/10 Python
Python命令行参数解析模块optparse使用实例
2015/04/13 Python
Google开源的Python格式化工具YAPF的安装和使用教程
2016/05/31 Python
请不要重复犯我在学习Python和Linux系统上的错误
2016/12/12 Python
python操作mysql代码总结
2018/06/01 Python
使用pandas批量处理矢量化字符串的实例讲解
2018/07/10 Python
django基于存储在前端的token用户认证解析
2019/08/06 Python
html5视频播放_动力节点Java学院整理
2017/07/13 HTML / CSS
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
印度手工编织服装和家居用品商店:Fabindi
2019/10/07 全球购物
责任心演讲稿
2014/05/14 职场文书
2015秋季新学期开学寄语
2015/05/28 职场文书
小学大队长竞选稿
2015/11/20 职场文书
2016年圣诞节寄语(一句话)
2015/12/07 职场文书
win10安装配置nginx的过程
2021/03/31 Servers
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技