详解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 VS ASP
Oct 09 PHP
我用php+mysql写的留言本
Oct 09 PHP
使用 eAccelerator加速PHP代码的方法
Sep 30 PHP
apache2.2.4+mysql5.0.77+php5.2.8安装精简
Apr 29 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
Jun 09 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
Aug 19 PHP
php实现模拟post请求用法实例
Jul 11 PHP
Yii2针对指定url的生成及图片等的引入方法小结
Jul 18 PHP
PHP与服务器文件系统的简单交互
Oct 21 PHP
PHP水印类,支持添加图片、文字、填充颜色区域的实现
Feb 04 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
PHP面向对象程序设计之接口的继承定义与用法详解
Dec 20 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/03 冲泡冲煮
PHP中函数rand和mt_rand的区别比较
2012/12/26 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
2016/02/15 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
2016/05/06 PHP
php操作access数据库的方法详解
2017/02/22 PHP
PHP使用SOAP调用API操作示例
2018/12/25 PHP
JavaScript中json对象和string对象之间相互转化
2012/12/26 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
Javascript中Event属性搜集整理
2013/09/17 Javascript
jquery自定义插件开发之window的实现过程
2016/05/06 Javascript
JavaScript实现鼠标点击导航栏变色特效
2017/02/08 Javascript
jQuery实现验证码功能
2017/03/17 Javascript
Swiper自定义分页器使用详解
2017/12/28 Javascript
JavaScript中arguments和this对象用法分析
2018/08/08 Javascript
解决angular2 获取到的数据无法实时更新的问题
2018/08/31 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
2018/09/28 Javascript
jQuery实现的简单日历组件定义与用法示例
2018/12/24 jQuery
jQuery实现简单的Ajax调用功能示例
2019/02/15 jQuery
vue swipe自定义组件实现轮播效果
2019/07/03 Javascript
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
python获取当前计算机cpu数量的方法
2015/04/18 Python
Python中线程编程之threading模块的使用详解
2015/06/23 Python
pandas DataFrame数据转为list的方法
2018/04/11 Python
django加载本地html的方法
2018/05/27 Python
Python3随机漫步生成数据并绘制
2018/08/27 Python
用Python写一个模拟qq聊天小程序的代码实例
2019/03/06 Python
Python aiohttp百万并发极限测试实例分析
2019/10/26 Python
python加载自定义词典实例
2019/12/06 Python
详解PyQt5信号与槽的几种高级玩法
2020/03/24 Python
python 轮询执行某函数的2种方式
2020/05/03 Python
如何使用canvas绘制可移动网格的示例代码
2020/12/14 HTML / CSS
Lookfantastic美国/加拿大:英国知名美妆购物网站
2019/03/27 全球购物
沙特阿拉伯排名第一的在线时尚购物应用程序:1Zillion
2020/08/08 全球购物
运动会稿件300字
2014/02/14 职场文书
2014年精神文明工作总结
2014/12/23 职场文书
售后服务质量承诺书
2015/04/29 职场文书