博主信息
Sky
博文
291
粉丝
0
评论
0
访问量
7099
积分:0
P豆:617

PHP中什么是魔术常量?有哪些魔术常量?(总结)

2021年10月14日 15:42:00阅读数:19博客 / Sky

之前我们已经了解了一些常用的魔术方法,除了魔术方法外,PHP还提供一些魔术常量,相信大家在日常的工作中也都使用过,这里给大家做一个总结。

其实PHP还提供了很多常量但都依赖于各类扩展库,而有几个常量是通用并且是跟随它们所在代码的位置来提供一些与位置有关的信息,这些就是***魔术常量***。

魔术常量是不分大小写的,__LINE__和__line__是一样的,但对于工程化的开发来说,常量还是尽量以大写为主。

__LINE__

文件中的当前行号。

echo __LINE__ . PHP_EOL; // 3function testLine(){echo __LINE__ . PHP_EOL; // 7}class TestLineClass{function testLine(){echo __LINE__ . PHP_EOL; // 14}}testLine();$test = new TestLineClass();$test->testLine();

__FILE__

文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。

echo __FILE__ . PHP_EOL; // D:\phpproject\php\newblog\php-magic-constant.php

__DIR__

文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增) =

echo __DIR__ . PHP_EOL; // D:\phpproject\php\newblog

__FUNCTION__

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

echo __FUNCTION__ . PHP_EOL; // 啥都没输出function testFunction(){echo __FUNCTION__ . PHP_EOL; // testFunction}class TestFunctionClass{function testFunction1(){echo __FUNCTION__ . PHP_EOL; // testFunction1}}testFunction();$test = new TestFunctionClass();$test->testFunction1();

__CLASS__

类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 Foo\Bar)。游戏拍卖平台地图注意自 PHP 5.4 起 __CLASS__ 对 trait 也起作用。当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字。

echo __CLASS__ . PHP_EOL; // 什么也没有function testClass(){echo __CLASS__ . PHP_EOL; // 什么也没有}trait TestClassTrait{function testClass2(){echo __CLASS__ . PHP_EOL; // TestClassClass}}class TestClassClass{use TestClassTrait;function testClass1(){echo __CLASS__ . PHP_EOL; // TestClassClass}}testClass();$test = new TestClassClass();$test->testClass1();$test->testClass2();

__TRAIT__

Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait 被定义时的名字(区分大小写)。Trait 名包括其被声明的作用区域(例如 Foo\Bar)。

echo __TRAIT__ . PHP_EOL; // 什么也没有function testTrait(){echo __TRAIT__ . PHP_EOL; // 什么也没有}trait TestTrait{function testTrait2(){echo __TRAIT__ . PHP_EOL; // TestTrait}}class TestTraitClass{use TestTrait;function testTrait1(){echo __TRAIT__ . PHP_EOL; // 什么也没有}}testTrait();$test = new TestTraitClass();$test->testTrait1();$test->testTrait2();

__METHOD__

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

echo __METHOD__ . PHP_EOL; // 什么也没有function testMethod(){echo __METHOD__ . PHP_EOL; // testMethod}class TestMethodClass{function testMethod1(){echo __METHOD__ . PHP_EOL; // TestMethodClass::testMethod1}}testMethod();$test = new TestMethodClass();$test->testMethod1();

__NAMESPACE__

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

echo __NAMESPACE__ . PHP_EOL; // test\magic\constantclass TestNameSpaceClass{function testNamespace(){echo __NAMESPACE__ . PHP_EOL; // test\magic\constant}}$test = new TestNameSpaceClass();$test->testNamespace();


版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • PHP?本篇文章就来带大家了解PHP
    上篇文章给大家介绍了《PHP继承和派生?我们如何运用继承?》,本文继续给大家介绍PHP方法?方法
    php两种意思,分别:1、指方法,PHP将所以两个下划线开头的类方法保留为方法;2、指PHP向它运行的任何脚本提供了大的预定义
    上篇文章给大家介绍了《PHP方法?方法?》,本文继续给大家介绍PHP接口?如何使用? 一定的参考价值,需要的朋友可以参考一下,希望对大家所帮助。
    php方法指以两个下划线“__”开头的方法,例如“__call()”、“__get()”、“__set()”等;指会随着他们所在代码位置的变化而变化的8个,例如“__LINE_
    一个简单值的标识符(名字),一旦定义就不允许再进行更改,但凡事都例外,PHP内置了,它们会随着位置的变化产生不同的值,本文就带大家一起来了解一下PHP
    php__FILE__一个,它会返回当前执行PHP脚本的完整路径和文件名。自PHP 4.0.2版本起,它包含一个绝对路径。
    在之前的文章《你知道php设置值的方式吗》,我们了解了,变声明和变赋值的方法。这次我们来了解一下,看看如何声明的,又如何检测一个已声明的。
    上篇文章给大家讲到了PHP数据类型间的自动转换和强制转换吗?那,本篇文章就开始探讨关于PHP和变之间限制用户跳过某文件,我们了解呢???想知道他们当的存在的关系吗?
    PHP,“__sleep()”一个方法,执行serialize()时,先会调用该方法;它可以用于清理对象,并返回一个包含对象应被序列化的变名称的数组。