详解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和MySQL保存和输出图片
Oct 09 PHP
Php Cookie的一个使用注意点
Nov 08 PHP
PHP获取当前文件所在目录 getcwd()函数
May 13 PHP
Thinkphp中import的几个用法详细介绍
Jul 02 PHP
php数组排序usort、uksort与sort函数用法
Nov 17 PHP
PHP输入输出流学习笔记
May 12 PHP
php轻松实现文件上传功能
Mar 03 PHP
php文件上传的两种实现方法
Apr 04 PHP
php记录搜索引擎爬行记录的实现代码
Mar 02 PHP
PHP后期静态绑定实例浅析
Dec 21 PHP
Laravel框架实现的批量删除功能示例
Jan 16 PHP
PHP操作Redis常用命令的实例详解
Dec 23 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 防止单引号,双引号在接受页面转义
2008/07/10 PHP
php 使用redis锁限制并发访问类示例
2016/11/02 PHP
PHP 用session与gd库实现简单验证码生成与验证的类方法
2016/11/15 PHP
在laravel框架中使用model层的方法
2019/10/08 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
JQuery实现倒计时按钮的实现代码
2012/03/23 Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
2015/11/09 Javascript
jQuery ajax提交Form表单实例(附demo源码)
2016/04/06 Javascript
浅谈javascript的闭包
2017/01/23 Javascript
js数字计算 误差问题的快速解决方法
2017/02/28 Javascript
基于代数方程库Algebra.js解二元一次方程功能示例
2017/06/09 Javascript
js编写简单的聊天室功能
2017/08/17 Javascript
解决IE11 vue +webpack 项目中数据更新后页面没有刷新的问题
2018/09/25 Javascript
详解nodejs http请求相关总结
2019/03/31 NodeJs
详解vue中使用protobuf踩坑记
2019/05/07 Javascript
微信小程序 wxParse插件显示视频问题
2019/09/27 Javascript
weui中的picker使用js进行动态绑定数据问题
2019/11/06 Javascript
JS插件amCharts实现绘制柱形图默认显示数值功能示例
2019/11/26 Javascript
实用的 vue tags 创建缓存导航的过程实现
2020/12/03 Vue.js
Python算法之图的遍历
2017/11/16 Python
python退出命令是什么?详解python退出方法
2018/12/10 Python
linux中如何使用python3获取ip地址
2019/07/15 Python
Python求两个字符串最长公共子序列代码实例
2020/03/05 Python
浅谈python多线程和多线程变量共享问题介绍
2020/04/17 Python
python 模拟登陆github的示例
2020/12/04 Python
HTML5 placeholder(空白提示)属性介绍
2013/08/07 HTML / CSS
Myprotein法国官网:欧洲第一运动营养品牌
2019/03/26 全球购物
The Hut英国:英国领先的豪华在线百货商店
2019/07/26 全球购物
美国价格实惠的在线眼镜网站:Zeelool
2020/12/25 全球购物
开展党的群众路线教育实践活动方案
2014/02/05 职场文书
师恩难忘教学反思
2014/04/27 职场文书
演讲稿格式范文
2014/05/19 职场文书
工会换届选举方案
2014/05/21 职场文书
幼儿园六一亲子活动方案
2014/08/26 职场文书
Python预测分词的实现
2021/06/18 Python
JavaScript模拟实现网易云轮播效果
2022/04/04 Javascript