PHP - 在类之外使用关键字的区别,并在类

时间:2017-04-04 02:44:11

标签: php laravel

美好的一天!

只是想问一下class中<{> 1}}和使用 使用的区别?我也用Google搜索了,但我的问题与答案不符。

示例

class

1 个答案:

答案 0 :(得分:4)

定义类时,它只能访问其名称空间中的其他类。例如,您的控制器在以下命名空间中定义。

namespace App\Http\Controllers\Auth;

因此,要使用其他类,您需要从它们自己的命名空间中导入它们,以便您可以访问它们。 e.g:

use Illuminate\Foundation\Auth\ThrottlesLogins;

如果你有javascript ES6经验,它有点类似import。导入包时,默认名称空间为/node_modules。要导入您自己的文件,您需要通过提供类似

的文件位置来对它们进行命名
import '../containers/index.js'

回到Laravel。现在您已经导入了ThrottlesLogins,这实际上是一个特征,现在在类use内部,它将公开所有方法。

use Illuminate\Foundation\Auth\ThrottlesLogins; //import
public class AuthController
{
    use ThrottlesLogins; //exposes all the methods inside
    ...

    public function login()
    {
        ...
        //login failed 
        $this->incrementLoginAttempts(); //defined in ThrottlesLogins Trait
    }
}

从上面的示例中,您可以直接访问incrementLoginAttempts()ThrottlesLogins定义了node -v v7.8.0