1. LINE
获取文件中的当前行号
<?php
echo '这是第 " ' . __LINE__ . ' " 行'; // 这是第 " 4 " 行
2. FILE
获取当前文件所在的完整路径,这是一个绝对路径
<?php
echo '该文件位于 " ' . __FILE__ . ' " '; // 该文件位于 " F:\phpstudy_pro\WWW\test\01-demo.php "
3. DIR
获取当前文件所在的目录,它等价于 dirname(FILE)。除非是根目录,否则目录中名不包括末尾的斜杠。
<?php
echo '该文件位于 " ' . __DIR__ . ' " '; // 该文件位于 " F:\phpstudy_pro\WWW\test "
4. FUNCTION
获取函数定义时的名称
<?php
function myTest()
{
echo '函数名为:' . __FUNCTION__;
}
myTest(); // 函数名为:myTest
5. CLASS
获取类定义时的名称
<?php
class test
{
function print()
{
echo '类名为:' . __CLASS__ . "<br>";
echo '函数名为:' . __FUNCTION__;
}
}
$t = new test();
$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
返回方法被定义时候的名字
<?php
function test() {
echo '函数名为:' . __METHOD__ ;
}
test(); // test
8. NAMESPACE
获取当前命名空间的名称
<?php
namespace MyProject;
echo '命名空间为:"', __NAMESPACE__, '"'; // 输出 "MyProject"
FUNCTION 和 METHOD 的区别
- 一句话理解,METHOD 像是一个对 _FUNCTION 的补充,它不仅仅返回方法名称,返回类名称+方法名称_
<?php
class Test{
public function doit(){
echo __FUNCTION__;
}
public function doitAgain(){
echo __METHOD__;
}
}
$obj = new Test();
$obj->doit(); // doit
echo '<br>';
$obj->doitAgain(); // Test::doitAgain