之前我们已经了解了一些常用的魔术方法,除了魔术方法外,PHP还提供一些魔术常量,相信大家在日常的工作中也都使用过,这里给大家做一个总结。
其实PHP还提供了很多常量但都依赖于各类扩展库,而有几个常量是通用并且是跟随它们所在代码的位置来提供一些与位置有关的信息,这些就是魔术常量。魔术常量是不分大小写的,\_\_LINE\_\_和\_\_line\_\_是一样的,但对于工程化的开发来说,常量还是尽量以大写为主。
\_\_LINE\_\_
文件中的当前行号。
echo __LINE__ . PHP_EOL; // 3 function 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\constant class TestNameSpaceClass { function testNamespace() { echo __NAMESPACE__ . PHP_EOL; // test\magic\constant } } $test = new TestNameSpaceClass(); $test->testNamespace();
完整代码:https://github.com/zhangyue0503/php/blob/master/newblog/php-magic-constant.php
到此这篇关于浅谈PHP中的那些魔术常量的文章就介绍到这了,更多相关PHP 魔术常量内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!
主要内容:__LINE__,实例,__FILE__,实例,__DIR__,实例,__FUNCTION__,实例,__CLASS__,实例,__TRAIT__,实例,__METHOD__,实例,__NAMESPACE__,实例PHP 向它运行的任何脚本提供了大量的预定义常量。 不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。 有八个魔术常量它们的值随着它们在代码中的位置改变而改变。 例如 __LINE__ 的值就依赖于它在脚本中所
本文向大家介绍浅谈HTTP 缓存的那些事儿,包括了浅谈HTTP 缓存的那些事儿的使用技巧和注意事项,需要的朋友参考一下 前言 HTTP 缓存机制作为 Web 应用性能优化的重要手段,对于从事 Web 开发的同学们来说,应该是知识体系的基础环节,也是想要成为前端架构的必备技能。 缓存的作用 我们为什么使用缓存,是因为缓存可以给我们的 Web 项目带来以下好处,以提高性能和用户体验。 加快了浏览器加载
本文向大家介绍PHP的魔术常量__METHOD__简介,包括了PHP的魔术常量__METHOD__简介的使用技巧和注意事项,需要的朋友参考一下 __METHOD__ 是PHP5之后新增的魔术常量,表示的是类文法的名称。魔术常量是一种PHP预定义常量,它的值可以是变化的,PHP中的其它已经存在的魔术常量有__LINE__、__FILE__、__FUNCTION__、__CLASS__等。 下面就用一
本文向大家介绍PHP 中魔术常量的实例详解,包括了PHP 中魔术常量的实例详解的使用技巧和注意事项,需要的朋友参考一下 PHP 中魔术常量的实例详解 本文介绍下,php编程中的魔术常量,掌握并灵活应用这些方法与常量,对于提高php的编程水平,有很大的帮助。有需要的朋友参考学习下。 魔术常量: 运行结果 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
问题内容: 根据PHP手册,为了使代码更易于移植,他们建议使用类似于以下内容的转义数据: 我还有其他将要执行的验证检查,但是从转义数据的角度来看,上述检查严格地安全吗?我还看到在PHP 6中将不再使用魔术引号。这将如何影响上述代码?我希望不必依赖于特定于数据库的转义函数,例如mysql_real_escape_string()。 问题答案: 魔术引号天生就坏了。它们本来是要清理PHP脚本的输入,但
本文向大家介绍详谈PHP面向对象中常用的关键字和魔术方法,包括了详谈PHP面向对象中常用的关键字和魔术方法的使用技巧和注意事项,需要的朋友参考一下 PHP面向对象中常用的关键字 final 1.final不能修饰成员属性(类中常量不是用这个关键字) 2.final只能修饰类和方法 作用: 使用final修饰的类不能被子类继承 使用final修饰的方法不能被子类覆盖 用来限制类不被继承,方法不