Other/其他

浅谈PHP中的那些神奇的魔术常量

也想出现在这里?联系我们
创客云

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

其实 PHP 还提供了很多常量但都依赖于各类扩展库,而有几个常量是通用并且是跟随它们所在代码的位置来提供一些与位置有关的信息,这些就是魔术常量。魔术常量是不分大小写的,\_\_LINE\_\_ 和\_\_line\_\_ 是一样的,但对于工程化的开发来说,常量还是尽量以大写为主。

也想出现在这里?联系我们
创客主机

\_\_LINE\_\_

文件中的当前行号

  1. echo __LINE__ . PHP_EOL; // 3
  2.  
  3. function testLine()
  4. {
  5.   echo __LINE__ . PHP_EOL; // 7
  6. }
  7.  
  8. class TestLineClass
  9. {
  10.   function testLine()
  11.   {
  12.     echo __LINE__ . PHP_EOL; // 14
  13.   }
  14. }
  15.  
  16. testLine();
  17. $test = new TestLineClass();
  18. $test->testLine();
也想出现在这里?联系我们
创客主机

\_\_FILE\_\_

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

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

\_\_DIR\_\_

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

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

\_\_FUNCTION\_\_

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

  1. echo __FUNCTION__ . PHP_EOL; // 啥都没输出
  2. function testFunction()
  3. {
  4.   echo __FUNCTION__ . PHP_EOL; // testFunction
  5. }
  6.  
  7. class TestFunctionClass
  8. {
  9.   function testFunction1()
  10.   {
  11.     echo __FUNCTION__ . PHP_EOL; // testFunction1
  12.   }
  13. }
  14.  
  15. testFunction();
  16. $test = new TestFunctionClass();
  17. $test->testFunction1();

\_\_CLASS\_\_

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

  1. echo __CLASS__ . PHP_EOL; // 什么也没有
  2. function testClass()
  3. {
  4.   echo __CLASS__ . PHP_EOL; // 什么也没有
  5. }
  6.  
  7. trait TestClassTrait
  8. {
  9.   function testClass2()
  10.   {
  11.     echo __CLASS__ . PHP_EOL; // TestClassClass
  12.   }
  13. }
  14.  
  15. class TestClassClass
  16. {
  17.   use TestClassTrait;
  18.  
  19.   function testClass1()
  20.   {
  21.     echo __CLASS__ . PHP_EOL; // TestClassClass
  22.   }
  23. }
  24.  
  25. testClass();
  26. $test = new TestClassClass();
  27. $test->testClass1();
  28. $test->testClass2();

\_\_TRAIT\_\_

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

  1. echo __TRAIT__ . PHP_EOL; // 什么也没有
  2. function testTrait()
  3. {
  4.   echo __TRAIT__ . PHP_EOL; // 什么也没有
  5. }
  6.  
  7. trait TestTrait
  8. {
  9.   function testTrait2()
  10.   {
  11.     echo __TRAIT__ . PHP_EOL; // TestTrait
  12.   }
  13. }
  14.  
  15. class TestTraitClass
  16. {
  17.   use TestTrait;
  18.  
  19.   function testTrait1()
  20.   {
  21.     echo __TRAIT__ . PHP_EOL; // 什么也没有
  22.   }
  23. }
  24.  
  25. testTrait();
  26. $test = new TestTraitClass();
  27. $test->testTrait1();
  28. $test->testTrait2();

\_\_METHOD\_\_

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

  1. echo __METHOD__ . PHP_EOL; // 什么也没有
  2. function testMethod()
  3. {
  4.   echo __METHOD__ . PHP_EOL; // testMethod
  5. }
  6.  
  7. class TestMethodClass
  8. {
  9.   function testMethod1()
  10.   {
  11.     echo __METHOD__ . PHP_EOL; // TestMethodClass::testMethod1
  12.   }
  13. }
  14.  
  15. testMethod();
  16. $test = new TestMethodClass();
  17. $test->testMethod1();

\_\_NAMESPACE\_\_

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

  1. echo __NAMESPACE__ . PHP_EOL; // test\magic\constant
  2. class TestNameSpaceClass
  3. {
  4.   function testNamespace()
  5.   {
  6.     echo __NAMESPACE__ . PHP_EOL; // test\magic\constant
  7.   }
  8. }
  9.  
  10. $test = new TestNameSpaceClass();
  11. $test->testNamespace();

到此这篇关于浅谈 PHP 中的那些魔术常量的文章就介绍到这了,更多相关 PHP 魔术常量内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持云模板!

服务范围 1、专业提供WordPress主题、插件汉化、优化、PHP环境配置等服务请详询在线客服
2、本站承接 WordPress、DedeCMS、ThinkPHP 等系统建站、仿站、开发、定制等服务
3、英文模板(主题)安装费用为120元/次,汉化主题首次免费安装(二次安装30元/次)
售后时间 周一至周五(法定节假日除外) 10:00-22:00
免责声明 本站所提供的模板(主题/插件)等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email: 2107117185@qq.com),我们会及时删除,给您带来的不便,我们深表歉意!
(0)

本文由 云模板 作者:PetitQ 发表,转载请注明来源!

也想出现在这里?联系我们
创客主机

热评文章

发表评论

热销模板

高端信息技术产品展示DedeCMS织梦中英文模板

Envato

本站承接 WordPress / DedeCMS / ThinkPHP 等
系统建站、仿站、开发、定制等业务!