首页 » SEO优化 » php中魔术常量技巧_PHP 中的魔术常量

php中魔术常量技巧_PHP 中的魔术常量

访客 2024-11-09 0

扫一扫用手机浏览

文章目录 [+]

在函数中利用__FUNCTION__

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

php中魔术常量技巧_PHP 中的魔术常量

function myFunction(){ echo __FUNCTION__;}

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

php中魔术常量技巧_PHP 中的魔术常量
(图片来自网络侵删)

在类方法中利用__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__相同的值。

相关文章

南京,IT人才的摇篮与创新高地

随着我国经济社会的快速发展,信息技术产业已成为推动国家经济增长的重要引擎。作为国家历史文化名城,南京不仅拥有深厚的文化底蕴,更在I...

SEO优化 2024-12-26 阅读0 评论0

南京IT数码产业的崛起与未来展望

随着科技的飞速发展,IT数码产业已成为推动我国经济发展的重要引擎。南京,这座历史悠久的城市,近年来在IT数码领域取得了显著的成就。...

SEO优化 2024-12-26 阅读0 评论0

C语言在水晶石中的应用与未来展望

随着信息技术的飞速发展,计算机技术已经深入到我们生活的方方面面。而C语言作为一种经典的编程语言,在计算机领域扮演着重要的角色。本文...

SEO优化 2024-12-26 阅读0 评论0

出国留学IT,梦想起航,拥抱全球科技浪潮

随着科技的飞速发展,信息技术(IT)已经成为全球范围内最具潜力和竞争力的行业之一。越来越多的中国学子选择出国留学,投身于IT领域的...

SEO优化 2024-12-26 阅读0 评论0

创业IT合伙,携手共创辉煌的未来

随着互联网技术的飞速发展,IT行业已成为推动我国经济增长的重要力量。在众多创业者中,IT合伙模式逐渐成为主流。本文将围绕“创业IT...

SEO优化 2024-12-26 阅读0 评论0

C语言在小型数组处理中的应用与优势

在众多编程语言中,C语言因其高效、灵活的特点,被广泛应用于软件开发、嵌入式系统等领域。其中,C语言在小型数组处理方面的应用尤为突出...

SEO优化 2024-12-26 阅读0 评论0