🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 魔术常量 * * * * * 说明: > PHP中的常量大部分都是不变的,但是有8个常量会随着他们所在代码位置的变化而变化,这8个常量被称为魔术常量。 ~~~ 1、__LINE__ 文件中的当前行号。 2、__FILE__ 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。 3、__DIR__ 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增) = 4、__FUNCTION__ 函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。 5、__CLASS__ 类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 __CLASS__ 对 trait 也起作用。当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字。可以用get_class来代替__CLASS__ 6、__TRAIT__ Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait 被定义时的名字(区分大小写)。Trait 名包括其被声明的作用区域(例如 Foo\Bar)。 7、__METHOD__ 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。 8、__NAMESPACE__ 当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。 ~~~ 实例一:__FUNCTION__和__METHOD__区别 ~~~ // 相对于孤立的函数来说,二个都可以取出函数名,没什么区别 //如果是class中的方法时,__FUNCTION__和只能取出class的方法名,__METHOD__不光能取出方法名,还能取出class名 class trick { function doit() { echo __FUNCTION__."<br/>";// 输出 doit } function doitagain() { echo __METHOD__."<br/>";// 输出 trick::doitagain echo get_class($this) . "<br/>";// 输出 trick } } $obj=new trick(); $obj->doit(); $obj->doitagain(); ~~~ 实例二:__CLASS__和get_class在继承中的区别,继承中,__CLASS__返回所在类的类名,get_class返回调用类的类名 ~~~ class base_class { function say_a() { echo "'a' - said the " . __CLASS__ . "<br/>";// 输出 base_class } function say_b() { echo "'b' - said the " . get_class($this) . "<br/>";// 输出 derived_class } } class derived_class extends base_class { function say_a() { parent::say_a(); echo "'a' - said the " . __CLASS__ . "<br/>";// 输出 derived_class } function say_b() { parent::say_b(); echo "'b' - said the " . get_class($this) . "<br/>";// 输出 derived_class } } $obj_b = new derived_class(); $obj_b->say_a(); echo "<br/>"; $obj_b->say_b(); ~~~ 资料来源: http://www.php.net/manual/zh/language.constants.predefined.php http://yansu.org/2014/04/27/magic-methods-and-magic-constants-in-php.html