2017-04-04 5 views
2

Guten Tag Jungs!PHP - Unterschied der Verwendung Keyword außerhalb der Klasse und verwenden Sie das Schlüsselwort innerhalb einer Klasse

Ich will nur den Unterschied von Verwendung fragen outise der class und Verwendung innerhalb des class? Ich habe es auch gegoogelt, aber meine Frage passt nicht zu einer Antwort.

Beispiel:

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

Verwenden Sie innerhalb einer Klasse ist Traits zu verwenden. Verwenden Sie outside, um Namespaces zu importieren. – Augwa

+0

@Augwa was meinst du damit? Kannst du eine bessere Erklärung geben? –

+0

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

Antwort

1

Wenn Sie eine Klasse definieren, kann es nur in seinem Namensräume Zugang zu den anderen Klassen haben. Ihr Controller ist beispielsweise in dem folgenden Namespace definiert.

Um andere Klassen zu verwenden, müssen Sie sie aus ihren eigenen Namespaces importieren, damit Sie darauf zugreifen können. z.B .:

use Illuminate\Foundation\Auth\ThrottlesLogins; 

Wenn Sie Javascript ES6 Erfahrung haben, ist es ein bisschen ähnlich wie import. Wenn Sie ein Paket importieren, lautet der Standardnamespace /node_modules. Um Ihre eigenen Dateien zu importieren, müssen Sie eine Art, sie zu Namespace durch den Speicherort der Datei geben wie

import '../containers/index.js' 

Zurück zu Laravel. Jetzt, wo Sie die ThrottlesLogins importiert haben, die eigentlich ein Merkmal ist, jetzt innerhalb der Klasse Sie use es alle Methoden im Inneren offen legen.

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

Aus dem obigen Beispiel haben Sie direkten Zugriff auf incrementLoginAttempts(), die die ThrottlesLogins definiert ist.

+0

Gutes Beispiel :) –

Verwandte Themen