gpt4 book ai didi

PHP : 'use' inside of the class definition

转载 作者:IT王子 更新时间:2023-10-28 23:56:22 24 4
gpt4 key购买 nike

最近我遇到一个在类定义中使用 use 语句的类。

谁能解释一下它到底是做什么的——因为我找不到任何关于它的信息。

我知道这可能是一种将它从给定文件的全局范围中移开的方法,但它是否也允许给定的类从多个父类继承 - 因为 extends only允许一个父类引用?

我看到的例子是在原来安装Laravel的User模型中:

<?php

use Illuminate\Auth\UserTrait;
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableTrait;
use Illuminate\Auth\Reminders\RemindableInterface;

class User extends Eloquent implements UserInterface, RemindableInterface {

use UserTrait, RemindableTrait;

/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'users';

/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = array('password', 'remember_token');

}

并且我已经看到该模型的一些示例实际上使用了 UserTrait 类中包含的方法 - 因此我怀疑,但我真的很想了解更多有关所附 的含义的信息使用语句。

PHP documentation说:

The use keyword must be declared in the outermost scope of a file (the global scope) or inside namespace declarations. This is because the importing is done at compile time and not runtime, so it cannot be block scoped. The following example will show an illegal use of the use keyword:

后面是例子:

namespace Languages;

class Greenlandic
{
use Languages\Danish;

...
}

这表明它是对 use 关键字的错误使用 - 有什么线索吗?

最佳答案

它们被称为 Traits 并且从 PHP 5.4 开始可用。使用自 PHP 5.0 起包含的 use 关键字将它们导入另一个类或命名空间,就像将常规类导入另一个类一样。它们是单一继承。实现traits的主要原因是因为单继承的限制。

有关详细信息,请参阅 PHP trait manual :

关于PHP : 'use' inside of the class definition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26073027/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com