大家好!
只想问的差异使用 outise的class和使用里面的class?我也用谷歌搜索,但是我的问题与答案不符。
范例:
namespace App\Http\Controllers\Auth;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
use Auth;
use Illuminate\Http\Request;
class AuthController extends Controller
{
use AuthenticatesAndRegistersUsers, ThrottlesLogins;
protected $redirectTo = '/';
/**
* Create a new authentication controller instance.
*
* @return void
*/
public function __construct()
{
// Some Code
}
Run Code Online (Sandbox Code Playgroud)
当定义一个类时,它只能访问其名称空间内的其他类。例如,您的控制器在以下名称空间中定义。
namespace App\Http\Controllers\Auth;
Run Code Online (Sandbox Code Playgroud)
因此,要使用其他类,需要从它们自己的名称空间中导入它们,以便可以访问它们。例如:
use Illuminate\Foundation\Auth\ThrottlesLogins;
Run Code Online (Sandbox Code Playgroud)
如果您有JavaScript ES6的经验,那就有点类似于 import。导入软件包时,默认名称空间为/node_modules。要导入自己的文件,您需要通过给文件位置类似的名称对它们进行命名空间排序
import '../containers/index.js'
Run Code Online (Sandbox Code Playgroud)
回到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
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,您可以直接访问incrementLoginAttempts(),定义为ThrottlesLogins。
| 归档时间: |
|
| 查看次数: |
1521 次 |
| 最近记录: |