2016-04-09 21 views
1

Hallo kann ich über diese fragen in Laravel RahmenLaravel Klasse Auth

namespace Illuminate\Support\Facades; 

/** 
* @see \Illuminate\Auth\AuthManager 
* @see \Illuminate\Contracts\Auth\Factory 
* @see \Illuminate\Contracts\Auth\Guard 
* @see \Illuminate\Contracts\Auth\StatefulGuard 
*/ 
class Auth extends Facade 
{ 
    /** 
    * Get the registered name of the component. 
    * 
    * @return string 
    */ 
    protected static function getFacadeAccessor() 
    { 
     return 'auth'; 
    } 
} 

was bedeutet die Rückkehr ‚Auth‘ genau an den Aufrufer zurückkehrt? ist es Text 'auth' oder ein Objekt? und was ist der Grund, warum sie nur eine Methode in dieser Klasse haben? Ich entschuldige mich, ich lerne gerade oop.

Vielen Dank im Voraus.

+0

es ist in den Zitaten wird es als eine Zeichenfolge zurückgeben. –

+0

und warten auf die Frage, was die Rückkehr 'auth' genau zum Anrufer zurückgibt? –

Antwort

2

In diesem Fall, wie Sie sehen Methode getFacadeAccessor gibt es auth String zurück.

Fassaden sind nur "Abkürzungen", um andere Klassen zu verwenden, aber in der Tat sollten Sie sie nicht überall verwenden, wenn Sie nicht brauchen.

In Laravel können Sie Objekte/Klassen in Anwendung binden. So können Sie zum Beispiel schreiben:

$app->bind('something', function() { 
    return new SomeObject(); 
}); 

Nehmen wir an, es Methode doSomething in SomeObject Klasse.

Jetzt können Sie mit dieser Methode verwenden:

$app['something']->doSomething(); 

Sie können aber auch schaffen Fassade:

class GreatClass extends Facade 
{ 
    /** 
    * Get the registered name of the component. 
    * 
    * @return string 
    */ 
    protected static function getFacadeAccessor() 
    { 
     return 'something'; 
    } 
} 

und jetzt überall in Ihrer Anwendung können Sie verwenden:

GreatClass::doSomething(); 

Beantworten Sie Ihre Frage getFacadeAccessor gibt nur den Namen der Name des Objekts zurück, das verwendet wird wenn an Anwendung gebunden. Um zu wissen, wie es verwendet wird Sie in die Quelle aussehen:

/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php

Die Methode, die Sie zuerst schauen sollen, ist getFacadeRoot - da diese Methode wird das angeforderte Objekt zurück.