您的位置:首页 > 房产 > 家装 > 西安企业网站建设哪家好_网络系统管理员获取ip地址_百度导航是哪个国家的_seo网站介绍

西安企业网站建设哪家好_网络系统管理员获取ip地址_百度导航是哪个国家的_seo网站介绍

2025/1/5 7:36:23 来源:https://blog.csdn.net/wangshifan116/article/details/144820817  浏览:    关键词:西安企业网站建设哪家好_网络系统管理员获取ip地址_百度导航是哪个国家的_seo网站介绍
西安企业网站建设哪家好_网络系统管理员获取ip地址_百度导航是哪个国家的_seo网站介绍

概述

PHP提供了9个魔术常数,您可以在PHP应用程序代码中使用。它们是“神奇的”,因为它们是在编译时定义的,不像常规常量(您可以自己定义)是在运行时定义的。这意味着它们的值可以根据它们在代码中的使用位置而更改。

FUNCTION

__FUNCTION__魔术常量返回使用它的函数的名称。如果在函数或方法之外使用它,它将返回空字符串。

在函数中使用__FUNCTION__

假设你有一个名为myFunction的函数:

function myFunction()
{echo __FUNCTION__;
}

调用上面的函数将输出:myFunction

在类方法中使用__FUNCTION__

假设你有一个类,它有一个名为myMethod的方法:

class MyClass
{public function myMethod(){echo __FUNCTION__;}
}

调用myMethod方法将输出:myMethod

在匿名函数中使用__FUNCTION__

假设你有一个匿名函数:

$myFunction = function () {echo __FUNCTION__;
};

调用$myFunction变量将输出:{closure}

__METHOD__

__METHOD__魔术常量返回使用它的方法的名称和编写它的类。如果在函数或方法之外使用它,它将返回空字符串。

在类方法中使用__METHOD__

假设您有一个App\Utilities\MyClass类,其方法名为myMethod

namespace App\Utilities;class MyClass
{public function myMethod(){echo __METHOD__;}
}

调用myMethod方法将输出:App\Utilities\MyClass::myMethod

在父类方法中使用__METHOD__

常量返回常量所在的类和方法名。这意味着如果你在父类中使用__METHOD__,任何子类都将使用父类的名称。

例如,假设你有一个名为App\Utilities\ParentClass的父类:

namespace App\Utilities;class ParentClass
{public function myMethod(){echo __METHOD__;}
}

你有一个名为App\Utilities\ChildClass的子类,它扩展了App\Utilities\ParentClass类:

namespace App\Utilities;class ChildClass extends ParentClass
{// ...
}

调用(new ChildClass())->myMethod()方法将输出:App\Utilities\ParentClass::myMethod

在函数中使用__METHOD__

如果你在一个函数中调用__METHOD__,输出将与__FUNCTION__相同。所以它只会输出函数的名称。

类似地,如果你在一个匿名函数中调用__METHOD__,输出将与__FUNCTION__相同。所以它只会输出{closure}

__CLASS__

__CLASS__魔术常量返回使用它的类的名称。如果在类外使用它,它将返回一个空字符串。

在类方法中使用__CLASS__

假设你有以下代码:

namespace App\Utilities;class MyClass
{public function myMethod(){echo __CLASS__;}
}

调用myMethod方法将输出:MyClass

在父类中使用__CLASS__

__METHOD__魔术常量类似,__CLASS__常量将返回写入它的类的名称。这意味着如果你在父类中使用__CLASS__,那么父类的名字将被使用,而不是子类的名字。

例如,假设你有一个名为App\Utilities\ParentClass的父类:

namespace App\Utilities;class ParentClass
{public function myMethod(){echo __CLASS__;}
}

你有一个名为App\Utilities\ChildClass的子类,它扩展了App\Utilities\ParentClass类:

namespace App\Utilities;class ChildClass extends ParentClass
{// ...
}

调用(new ChildClass())->myMethod()方法将输出:App\Utilities\ParentClass

在Trait中使用__CLASS__

如果在trait中使用了__CLASS__常量,它将返回使用trait的类的名称。

例如,假设你有一个名为MyTrait的trait:

namespace App\Utilities;trait MyTrait
{public function myMethod(){echo __CLASS__;}
}

你有一个名为MyClass的类,它使用了MyTraittrait:

namespace App\Utilities;class MyClass
{use MyTrait;
}

调用(new MyClass())->myMethod()方法将输出:App\Utilities\MyClass

::class

::class魔术常量返回类的完全限定类名。

这是我发现自己使用最多的魔法常数,特别是在Laravel应用程序中。当您使用字符串形式的类名时,它特别有用。

假设你有下面的类,App\Utilities\MyClass

namespace App\Utilities;class MyClass
{// ...
}

调用App\Utilities\MyClass::class将输出:App\Utilities\MyClass

在Laravel中使用::class

如果你是一个Laravel开发者,你会看到这个常量以前用于定义路由和模型关系。

例如,要在Laravel中定义一个web路由,你可以在你的routes/web.php文件中这样做:

use App\Http\Controllers\UserController;Route::get('/users', [UserController::class, 'index']);

注意我们是如何使用::class常量来引用UserController类的,这将给我们App\Http\Controllers\UserController。类似地,当在Laravel模型中定义关系时,你可以这样做:

namespace App\Models;use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;class User extends Model
{public function posts(): HasMany{return $this->hasMany(Post::class);}
}

在上面的例子中,我们使用::class常量来获取Post模型类的完全限定名,这将给我们App\Models\Post

TRAIT

__TRAIT__magic常量返回使用它的trait的完全限定名。如果在trait之外使用,它将返回一个空字符串。

例如,假设我们有以下特质:

namespace App\Utilities;trait MyTrait
{public function myMethod(){echo __TRAIT__;}
}

我们有一个使用MyTraittrait的类:

namespace App\Utilities;class MyClass
{use MyTrait;
}

调用(new MyClass())->myMethod()方法将输出:App\Utilities\MyTrait

NAMESPACE

__NAMESPACE__魔术常量返回当前使用它的命名空间。如果文件不在命名空间中,它将返回空字符串。例如,假设我们有以下代码:

namespace App\Utilities;echo __NAMESPACE__;

运行上面的代码会输出:App\Utilities

__METHOD____CLASS__魔术常量类似,__NAMESPACE__常量将返回写入它的文件的名称空间。

例如,假设你有一个名为App\Utilities\ParentClass的父类:

namespace App\Utilities;class ParentClass
{public function myMethod(){echo __NAMESPACE__;}
}

你有一个名为App\Utilities\Child\ChildClass的子类,它扩展了App\Utilities\ParentClass类:

namespace App\Utilities\Child;class ChildClass extends ParentClass
{// ...
}

运行(new ChildClass())->myMethod()方法将输出:App\Utilities

LINE

__LINE__魔术常量返回使用它的文件的当前行号。

例如,假设我们有以下代码:

<?php// An empty line...echo __LINE__;

运行上面的代码将输出5,因为echo __LINE__;语句位于文件的第5行。

FILE

__FILE__魔术常量返回使用它的文件的完整路径和文件名。

例如,假设我们在位于/Users/ashleyallen/my-app/index.php的文件中有以下代码

echo __FILE__;

运行上面的代码将输出/Users/ashleyallen/my-app/index.php

DIR

__DIR__魔术常量返回使用它的文件的目录。

例如,假设我们在位于/Users/ashleyallen/my-app/index.php的文件中有以下代码

echo __DIR__;

运行上面的代码将输出/Users/ashleyallen/my-app

值得注意的是,除非目录是根目录,否则__DIR__常量不包含尾随斜杠。

您也可以使用dirname(__FILE__)实现与__DIR__相同的值。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com