2017-04-04 5 views
2

おはよう!PHP - クラス外の使用キーワードとクラス内の使用キーワードの違い

ちょうどclass内部class使用 outise 使用の違いをお聞きしたいですか?私もそれをgoogledが、私の質問は答えに一致しません。

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 
    } 
+2

クラス内での使用は特性を使用することです。外部は名前空間をインポートすることです。 – Augwa

+0

@Augwaそれはどういう意味ですか?あなたはより良い説明を提供できますか? –

+0

http://php.net/manual/en/language.oop5.traits.php – Augwa

答えて

1

あなたがクラスを定義すると、それだけでその名前空間内の他のクラスにアクセスすることができます。あなたのコントローラは、例えば以下の名前空間内で定義されています。

namespace App\Http\Controllers\Auth; 

他のクラスを使用するには、そのクラスにアクセスできるように別のクラスを独自の名前空間からインポートする必要があります。例えば:あなたはjavascriptのES6の経験を持っている場合、それはimportに似て少し

use Illuminate\Foundation\Auth\ThrottlesLogins; 

です。パッケージをインポートすると、デフォルトの名前空間は/node_modulesになります。独自のファイルをインポートするには、ファイルの場所を

のように並べ替える必要があります。
import '../containers/index.js' 

Back to 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 
    } 
} 

上記の例から、あなたはThrottlesLogins定義されincrementLoginAttempts()への直接アクセスを持っています。

+0

良い例:) –

関連する問題