详解PHP中的8个魔术常量


Posted in PHP onJuly 06, 2020

PHP 向它运行的任何脚本提供了大量的预定义常量。

不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。

有八个魔术常量它们的值随着它们在代码中的位置改变而改变。

例如 __LINE__ 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写,如下:

__LINE__

文件中的当前行号。

<?php
echo '这是第 " ' . __LINE__ . ' " 行';
?>

以上实例输出结果为:

这是第 “ 2 ” 行

__FILE__

文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。

自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。

实例:

<?php
echo '该文件位于 " ' . __FILE__ . ' " ';
?>

以上实例输出结果为:

该文件位于 “ E:\wamp\www\test\index.php ”

__DIR__

文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。

它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增)

<?php
echo '该文件位于 " ' . __DIR__ . ' " ';
?>

以上实例输出结果为:

该文件位于 “ E:\wamp\www\test ”

__FUNCTION__

函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

<?php
function test() {
 echo '函数名为:' . __FUNCTION__ ;
}
test();
?>

以上实例输出结果为:

函数名为:test

__CLASS__

类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。

在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 __CLASS__ 对 trait 也起作用。当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字。

<?php
class test {
 function _print() {
  echo '类名为:' . __CLASS__ . "<br>";
  echo '函数名为:' . __FUNCTION__ ;
 }
}
$t = new test();
$t->_print();
?>

以上实例输出结果为:

类名为:test
函数名为:_print

__TRAIT__

Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。

Trait 名包括其被声明的作用区域(例如 Foo\Bar)。

从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。其行为 MyHelloWorld 类中定义的方法一致。优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。

<?php
class Base {
 public function sayHello() {
  echo 'Hello ';
 }
}
 
trait SayWorld {
 public function sayHello() {
  parent::sayHello();
  echo 'World!';
 }
}
 
class MyHelloWorld extends Base {
 use SayWorld;
}
 
$o = new MyHelloWorld();
$o->sayHello();
?>

以上例程会输出:

Hello World!

__METHOD__

类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。

实例:

<?php
function test() {
 echo '函数名为:' . __METHOD__ ;
}
test();
?>

以上实例输出结果为:

函数名为:test

__NAMESPACE__

当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。

实例:

<?php
namespace MyProject;
 
echo '命名空间为:"', __NAMESPACE__, '"'; // 输出 "MyProject"
?>

以上实例输出结果为:

命名空间为:"MyProject"

以上就是详解PHP中的8个魔术常量的详细内容,更多关于PHP 魔术常量的资料请关注三水点靠木其它相关文章!

PHP 相关文章推荐
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
Aug 26 PHP
php学习之 数组声明
Jun 09 PHP
解析PHP中如何将数组变量写入文件
Jun 06 PHP
php自动加载机制的深入分析
Jun 08 PHP
PHP实现扎金花游戏之大小比赛的方法
Mar 10 PHP
php实现随机生成易于记忆的密码
Jun 19 PHP
PHP屏蔽关键字实现方法
Nov 17 PHP
PHPMailer发送邮件
Dec 28 PHP
THINKPHP在添加数据的时候获取主键id的值方法
Apr 03 PHP
浅析PHP中的闭包和匿名函数
Dec 25 PHP
ThinkPHP框架实现的邮箱激活功能示例
Jun 15 PHP
PDO::quote讲解
Jan 29 PHP
php 利用socket发送GET,POST请求的实例代码
Jul 04 #PHP
PHP实现递归的三种方法
Jul 04 #PHP
laravel开发环境homestead搭建过程详解
Jul 03 #PHP
PHP7原生MySQL数据库操作实现代码
Jul 03 #PHP
PHP 超级全局变量相关总结
Jun 30 #PHP
详细分析PHP 命名空间(namespace)
Jun 30 #PHP
浅析PHP echo 和 print 语句
Jun 30 #PHP
You might like
历史证明,懒惰才是推动科学发展技术进步的动力
2021/03/02 无线电
从C/C++迁移到PHP——判断字符类型的函数
2006/10/09 PHP
深入密码加salt原理的分析
2013/06/06 PHP
php计算整个目录大小的方法
2015/06/01 PHP
PHP判断上传文件类型的解决办法
2015/10/20 PHP
php轻松实现文件上传功能
2016/03/03 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
2019/04/10 PHP
jquery tools之tabs 选项卡/页签
2009/07/25 Javascript
javascript拓展DOM操作 prependChild insertAfert
2010/11/17 Javascript
关于jQuery中.attr()和.prop()的问题探讨
2013/09/06 Javascript
node.js中的events.emitter.listeners方法使用说明
2014/12/10 Javascript
jQuery实现移动 和 渐变特效的点击事件
2015/02/26 Javascript
jQuery 1.9.1源码分析系列(十三)之位置大小操作
2015/12/02 Javascript
微信小程序如何获知用户运行小程序的场景教程
2017/05/17 Javascript
JS实现给json数组动态赋值的方法示例
2020/03/19 Javascript
vue router demo详解
2017/10/13 Javascript
nodejs读取并去重excel文件
2018/04/22 NodeJs
jQuery实现列表的增加和删除功能
2018/06/14 jQuery
layui的layedit富文本赋值方法
2019/09/18 Javascript
vue轮播组件实现$children和$parent 附带好用的gif录制工具
2019/09/26 Javascript
Vue 实现从文件中获取文本信息的方法详解
2019/10/16 Javascript
[10:07]2014DOTA2国际邀请赛 实拍选手现场观战DK对阵Titan
2014/07/12 DOTA
[02:45]2016年中国刀塔全程回顾,完美“圣”典即将上演
2016/12/15 DOTA
在Python的Django框架中调用方法和处理无效变量
2015/07/15 Python
Python pandas常用函数详解
2018/02/07 Python
python读取.mat文件的数据及实例代码
2019/07/12 Python
HTML5 视频播放(video),JavaScript控制视频的实例代码
2018/10/08 HTML / CSS
贝玲妃英国官网:Benefit英国
2018/02/03 全球购物
波兰珠宝品牌:YES
2019/08/09 全球购物
请编程遍历页面上所有 TextBox 控件并给它赋值为 string.Empty
2015/12/03 面试题
机械电子工程毕业生自荐信
2013/11/23 职场文书
幼儿园中秋节活动方案2013
2014/01/29 职场文书
喝酒驾驶检讨书
2014/10/01 职场文书
乡镇党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
北京英语导游词
2015/02/12 职场文书
2015秋季小学开学寄语
2015/05/27 职场文书