详解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 相关文章推荐
五个PHP程序员工具
May 26 PHP
php 将字符串按大写字母分隔成字符串数组
Apr 30 PHP
IIS7.X配置PHP运行环境小结
Jun 09 PHP
thinkphp的c方法使用示例
Feb 24 PHP
Yii框架中 find findAll 查找出制定的字段的方法对比
Sep 10 PHP
Yii框架登录流程分析
Dec 03 PHP
php打印输出棋盘的实现方法
Dec 23 PHP
phplot生成图片类用法详解
Jan 06 PHP
浅析PHP中Session可能会引起并发问题
Jul 23 PHP
简介WordPress中用于获取首页和站点链接的PHP函数
Dec 17 PHP
PHP array_key_exists检查键名或索引是否存在于数组中的实现方法
Jun 13 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
Aug 01 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
PHP数字格式化
2006/12/06 PHP
php实现的click captcha点击验证码类实例
2014/09/23 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
2019/06/14 PHP
php实现银联商务公众号+服务窗支付的示例代码
2019/10/12 PHP
laravel 解决多库下的DB::transaction()事务失效问题
2019/10/21 PHP
Laravel ORM 数据model操作教程
2019/10/21 PHP
laravel中Redis队列监听中断的分析
2020/09/14 PHP
jQuery的one()方法用法实例
2015/01/19 Javascript
谷歌showModalDialog()方法不兼容出现对话窗口的解决办法
2016/02/15 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
JavaScript 闭包机制详解及实例代码
2016/10/10 Javascript
基于Three.js插件制作360度全景图
2016/11/29 Javascript
Vuex模块化实现待办事项的状态管理
2017/03/15 Javascript
vue源码入口文件分析(推荐)
2018/01/30 Javascript
koa上传excel文件并解析的实现方法
2018/08/09 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
2019/10/26 Javascript
KnockoutJS数组比较算法实例详解
2019/11/25 Javascript
vue 实现根据data中的属性值来设置不同的样式
2020/08/04 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
Python struct模块解析
2014/06/12 Python
详解python之多进程和进程池(Processing库)
2017/06/09 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
2018/01/04 Python
Python之文字转图片方法
2018/05/10 Python
TensorFlow数据输入的方法示例
2018/06/19 Python
Python装饰器基础概念与用法详解
2018/12/22 Python
使用Python OpenCV为CNN增加图像样本的实现
2019/06/10 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
2019/11/05 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
2020/03/14 Python
Python生成器generator原理及用法解析
2020/07/20 Python
基于python实现操作git过程代码解析
2020/07/27 Python
CSS3动画animation实现云彩向左滚动
2014/05/09 HTML / CSS
HTML5+CSS3应用详解
2014/02/24 HTML / CSS
一些.net面试题
2014/10/06 面试题
乡文化站暑期培训方案
2014/08/28 职场文书
好媳妇事迹材料
2014/12/24 职场文书
浅析Python OpenCV三种滤镜效果
2022/04/11 Python