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数据库连接类~~做成一个分页类!
Nov 25 PHP
PHP 应用程序的安全 -- 不能违反的四条安全规则
Nov 26 PHP
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
Feb 11 PHP
PHP Google的translate API代码
Dec 10 PHP
PHP的范围解析操作符(::)的含义分析说明
Jul 03 PHP
使用php判断网页是否gzip压缩
Jun 25 PHP
php检测用户是否用手机(Mobile)访问网站的类
Jan 09 PHP
让你的PHP7更快之Hugepage用法分析
May 31 PHP
php curl 模拟登录并获取数据实例详解
Dec 22 PHP
PHP开发中解决并发问题的几种实现方法分析
Nov 13 PHP
PHP receiveMail实现收邮件功能
Apr 25 PHP
PHP下载大文件失败并限制下载速度的实例代码
May 10 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
颠覆常识!无色透明的咖啡诞生了(中日双语)
2021/03/03 咖啡文化
PHP 数组教程 定义数组
2009/10/23 PHP
PHP调用Linux命令权限不足问题解决方法
2015/02/07 PHP
typecho插件编写教程(一):Hello World
2015/05/28 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
2015/07/31 PHP
php实现连接access数据库并转txt写入的方法
2017/02/08 PHP
jQuery动态地获取系统时间实现代码
2013/05/24 Javascript
JavaScript两种跨域技术全面介绍
2014/04/16 Javascript
jQuery不使用插件及swf实现无刷新文件上传
2014/12/08 Javascript
javascript实现炫酷的拖动分页
2015/05/11 Javascript
JavaScript实现点击文字切换登录窗口的方法
2015/05/11 Javascript
微信内置浏览器私有接口WeixinJSBridge介绍
2015/05/25 Javascript
Node.js实用代码段之获取Buffer对象字节长度
2016/03/17 Javascript
Extjs4.0 ComboBox如何实现三级联动
2016/05/11 Javascript
Bootstrap页面布局基础知识全面解析
2016/06/13 Javascript
使用JavaScript获取Request中参数的值方法
2016/09/27 Javascript
原生js实现验证码功能
2017/03/16 Javascript
node.js多个异步过程中判断执行是否完成的解决方案
2017/12/10 Javascript
npm全局模块卸载及默认安装目录修改方法
2018/05/15 Javascript
vue本地打开build后生成的dist文件夹index.html问题
2019/09/04 Javascript
python with statement 进行文件操作指南
2014/08/22 Python
python迭代器实例简析
2014/09/25 Python
Python 检查数组元素是否存在类似PHP isset()方法
2014/10/14 Python
详细讲解Python中的文件I/O操作
2015/05/24 Python
python用户评论标签匹配的解决方法
2018/05/31 Python
浅谈解除装饰器作用(python3新增)
2018/10/15 Python
django正续或者倒序查库实例
2020/05/19 Python
基于Pyinstaller打包Python程序并压缩文件大小
2020/05/28 Python
英国最大的在线运动补充剂商店:Discount Supplements
2017/06/03 全球购物
《藏戏》教学反思
2014/02/11 职场文书
工作决心书范文
2014/03/11 职场文书
商务宴请邀请函范文
2015/02/02 职场文书
老干部座谈会主持词
2015/07/03 职场文书
2016年度师德标兵先进事迹材料
2016/02/26 职场文书
预备党员入党思想汇报(范文)
2019/08/14 职场文书
Minikube搭建Kubernetes集群
2022/03/31 Servers