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

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

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

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


__LINE__

文件中的当前行号。

实例

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

以上实例输出结果为:

这是第 “ 2 ” 行

__FILE__

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

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

实例:

实例

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

以上实例输出结果为:

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

一般可以结合  dirname(脚本所在目录),basename(脚本文件名)函数使用。


__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 魔术常量,__LINE__,__FILE__,__DIR__等等8个常用魔术常量相关推荐

  1. 使用一些宏跟踪调试__LINE__ __FILE__ __DATE__ __TIME__ __STDC__

    使用一些宏跟踪调试 ANSI标准说明了五个预定义的宏名.它们是: __LINE__ __FILE__ __DATE__ __TIME__ __STDC__ C++中还定义了 __cplusplus 如 ...

  2. 1、如何进行字符串常量中的字符定位_Java String:字符串常量池,我相信会有很多朋友不很理解这部分...

    作为最基础的引用数据类型,Java 设计者为 String 提供了字符串常量池以提高其性能,那么字符串常量池的具体原理是什么,我们带着以下三个问题,去理解字符串常量池: 字符串常量池的设计意图是什么? ...

  3. 常量指针(Pointer to const)与指针常量(Const pointer)

    常量指针(Pointer to const)与指针常量(Const pointer) 1. Concepts 很多时候对于这两个概念的困惑来自于中文字面翻译.我们无法通过字面含义直接理解判断该'常量' ...

  4. c语言中常量分为那两种,C语言中的常量和字面值

    数据类型 和 字面值 的关系: 如果有语句 int a = 1234;那么int就是数据类型,a是变量,1234是字面值.int的字面值也就是可以用来初始化int类型变量的东西(不要说用其他变量也可以 ...

  5. java 常量字符串过长_编译出错:对于常量池来说,字符串表示的UTF过长,那我想知道,JVM的常量池到底有多大?...

    输入缓冲说是8000个字符,和这有关吗? String内部是以char数组的形式存储,数组的长度是int类型,那么String允许的最大长度就是Integer.MAX_VALUE了,214748364 ...

  6. python魔术方法是什么_Python常用魔术方法

    什么是魔术方法? 在Python中,所有以双下划线__包起来的方法,统称为Magic Method(魔术方法),它是一种的特殊方法,普通方法需要调用,而魔术方法不需要调用就可以自动执行. 魔术方法在类 ...

  7. 用排列组合来编码通信(六)——魔术《5张牌的预言》的魔术拓展之《My Fitch Four Glory》...

    早点关注我,精彩不错过! 在上一篇中,我们介绍了<5张牌的预言>这个魔术的一个精彩的扩展表演<Eigen's Value>,把这个魔术和数学性质的结合做到了极致,相关内容请戳: ...

  8. 用排列组合来编码通信(五)——魔术《5张牌的预言》的魔术拓展之《Eigen's Value》...

    早点关注我,精彩不错过! 在前面的文章中,我们已经讲到了用托来进行编码通信的系列,相关内容请戳: 用排列组合来编码通信(四)--魔术<5张牌的预言>的数学拓展 用排列组合来编码通信(三)- ...

  9. 14.String常量池:什么是字符常量???常量池在内存空间中的位置在哪里???判断s7、s8、s9是不是字符常量???代码

    14.String常量池:什么是字符常量???常量池在内存空间中的位置在哪里???判断s7.s8.s9是不是字符常量???代码 学习:第3遍 1.什么是字符常量??? 使用双引号直接创建的字符串 称为 ...

最新文章

  1. 学校计算机机房好处,浅谈学校计算机机房维护
  2. 正确使用索引(sql优化),limit分页优化,执行计划,慢日志查询
  3. qt获取开发板ip地址_qt获取网络ip地址的类
  4. 【Nginx-20180108】Nginx的搭建文件服务器问题一则
  5. P1311 选择客栈
  6. 糟糕程序员的20个坏习惯
  7. MyBatis学习总结(17)——Mybatis分页插件PageHelper
  8. .Net Core 3.0 IdentityServer4 快速入门02
  9. 前端学习(2955):项目中组件的全局注册
  10. php 正则匹配静态资源,Struts2 配置静态资源文件不经过Strut处理(正则匹配)
  11. 【英语学习】【WOTD】newspeak 释义/词源/示例
  12. netbeans php 断点调试,windows7 + iis7 + fastcgi + php5 + netbeans + xdebug 调试 php
  13. 总结几种简单实用的数据恢复技巧
  14. 如何在苹果Mac上通过通知中心禁用通知?
  15. java下载不了_教大家电脑java安装不了怎么办
  16. Fibonacci数列 斐波那契数列
  17. 参观微软亚洲研究院有感
  18. WebScoket 实例 简单的网页聊天室
  19. 服务器画图plots不显示,Rstudio的Plots不显示图形
  20. 新疆计算机一级考试excel公式,2020年XX专业技术人员继续教育公需课《Excel快速统计》试题及答案...

热门文章

  1. 世界黄金价格走势,十大香港国际黄金交易平台排行榜
  2. java里的椭圆拟合_[求助]椭圆的跟踪拟合
  3. 国内与国外CRM系统相比有哪些优劣势?
  4. echarts 仿支付宝基金七日年化折线图
  5. 程序员找不到合适工作的原因总结
  6. linux搭建ssh服务器,并用xshell远程连接
  7. 三峡大学计算机与信息学院王,周欢,三峡大学 计算机与信息学院
  8. JS判断当前页面是否在微信内打开
  9. Android中指纹识别的使用
  10. 常见iOS开发面试题(有10w多访问量的面试题)