1. LINE

获取文件中的当前行号

  1. <?php
  2. echo '这是第 " ' . __LINE__ . ' " 行'; // 这是第 " 4 " 行

2. FILE

获取当前文件所在的完整路径,这是一个绝对路径

  1. <?php
  2. echo '该文件位于 " ' . __FILE__ . ' " '; // 该文件位于 " F:\phpstudy_pro\WWW\test\01-demo.php "

3. DIR

获取当前文件所在的目录,它等价于 dirname(FILE)。除非是根目录,否则目录中名不包括末尾的斜杠。

  1. <?php
  2. echo '该文件位于 " ' . __DIR__ . ' " '; // 该文件位于 " F:\phpstudy_pro\WWW\test "

4. FUNCTION

获取函数定义时的名称

  1. <?php
  2. function myTest()
  3. {
  4. echo '函数名为:' . __FUNCTION__;
  5. }
  6. myTest(); // 函数名为:myTest

5. CLASS

获取类定义时的名称

  1. <?php
  2. class test
  3. {
  4. function print()
  5. {
  6. echo '类名为:' . __CLASS__ . "<br>";
  7. echo '函数名为:' . __FUNCTION__;
  8. }
  9. }
  10. $t = new test();
  11. $t->print(); //类名为:test 函数名为:print

6. TRAIT

Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。
Trait 名包括其被声明的作用区域(例如 Foo\Bar)。
从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。其行为 MyHelloWorld 类中定义的方法一致。优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。

7. METHOD

返回方法被定义时候的名字

  1. <?php
  2. function test() {
  3. echo '函数名为:' . __METHOD__ ;
  4. }
  5. test(); // test

8. NAMESPACE

获取当前命名空间的名称

  1. <?php
  2. namespace MyProject;
  3. echo '命名空间为:"', __NAMESPACE__, '"'; // 输出 "MyProject"

FUNCTIONMETHOD 的区别

  • 一句话理解,METHOD 像是一个对 _FUNCTION 的补充,它不仅仅返回方法名称,返回类名称+方法名称_
  1. <?php
  2. class Test{
  3. public function doit(){
  4. echo __FUNCTION__;
  5. }
  6. public function doitAgain(){
  7. echo __METHOD__;
  8. }
  9. }
  10. $obj = new Test();
  11. $obj->doit(); // doit
  12. echo '<br>';
  13. $obj->doitAgain(); // Test::doitAgain