November 21, 2016 —John Koster
The following tables will list all the facades that are available by default. In addition, they will display the name of the service container binding as well as the class behind the facade. If a particular facade provides additional methods (that are not necessarily available in the underlying class), it will appear in the third table "Facades Providing Additional Methods". Any additional methods will be explained later in the section.
Facade | Service Container Binding |
---|---|
App | app |
Artisan | Illuminate\Contracts\Console\Kernel |
Auth | auth |
Blade | See "Notes on Blade" |
Bus | Illuminate\Contracts\Bus\Dispatcher |
Cache | cache |
Config | config |
Cookie | cookie |
Crypt | encrypter |
DB | db |
Event | events |
File | files |
Gate | Illuminate\Contracts\Auth\Access\Gate |
Hash | hash |
Input | request |
Lang | translator |
Log | log |
mailer |
|
Password | auth.password |
Queue | queue |
Redirect | redirect |
Redis | redis |
Request | request |
Response | Illuminate\Contracts\Routing\ResponseFactory |
Route | router |
Schema | See "Notes on Schema" |
Session | session |
Storage | filesystem |
URL | url |
Validator | validator |
View | view |
Facade | Resolved Class |
---|---|
App | Illuminate\Foundation\Application |
Artisan | App\Console\Kernel |
Auth | Illuminate\Auth\AuthManager |
Blade | Illuminate\View\Compilers\BladeCompiler |
Bus | Illuminate\Bus\Dispatcher |
Cache | Illuminate\Cache\CacheManager |
Config | Illuminate\Config\Repository |
Cookie | Illuminate\Cookie\CookieJar |
Crypt | Illuminate\Encryption\Encrypter |
DB | Illuminate\Database\DatabaseManager |
Event | Illuminate\Events\Dispatcher |
File | Illuminate\Filesystem\Filesystem |
Gate | Illuminate\Auth\Access\Gate |
Hash | Illuminate\Hashing\BcryptHasher |
Input | Illuminate\Http\Request |
Lang | Illuminate\Translation\Translator |
Log | Illuminate\Log\Writer |
Illuminate\Mail\Mailer |
|
Password | Illuminate\Auth\Passwords\PasswordBroker |
Queue | Illuminate\Queue\QueueManager |
Redirect | Illuminate\Routing\Redirector |
Redis | Illuminate\Redis\Database |
Request | Illuminate\Http\Request |
Response | Illuminate\Routing\ResponseFactory |
Route | Illuminate\Routing\Router |
Schema | Illuminate\Database\Schema\MySqlBuilder |
Session | Illuminate\Session\SessionManager |
Storage | Illuminate\Contracts\Filesystem\Factory |
URL | Illuminate\Routing\UrlGenerator |
Validator | Illuminate\Validator\Factory |
View | Illuminate\View\Factory |
Facade | Number of Additional Methods |
---|---|
Cookie | 2 |
Input | 2 |
Schema | 2 |
Blade
Most facades request a concrete class implementation from the service container based off of some abstract string representation. However, the Blade
facade retrieve an Illuminate\View\Engines
\EngineResolver
instance from the Illuminate\View\Factory
.
The Illuminate\View\Engines\EngineResolver
is a class that returns template compilers based on a given key name. By default, the following compilers and engines are available:
Compiler/Engine Name | Concrete Class Implementation |
---|---|
php |
Illuminate\View\Engines\PhpEngine |
blade |
Illuminate\View\Compilers\BladeCompiler |
Developers can manually create an instance of the BladeCompiler
themselves like so (this sample is provided for demonstration purposes):
1<?php2 3use Illuminate\Support\Facades\App;4 5$bladeCompiler = App::make('view')->getEngineResolver()6 ->resolve('blade')->getCompiler();
Schema
Like the Blade
facade, the Schema
facade does not simply resolve some instance from the service container. The Schema
facade returns an instance of Illuminate\Database\Schema\Builder
configured to use the default connection that appears in the database database configuration.
Cookie
MethodsThe Cookie
facade defines two additional methods. These methods access other, related, components. These methods exist to simplify accessing related components.
has($key)
The has
function will check if a cookie with the given $key
exists for the current request.
get($key, $default = null)
The get
function will retrieve a cookie from the current request with the given $key
. A $default
value can be supplied and will be returned if a cookie with the given $key
does not exist.
Input
MethodsThe Input
facade defines one extra method. Facades define extra methods to provide simpler access to underlying sub-systems, or to call functions on other, related components.
get($key = null, $default = null)
The get
method will get an item from the input data, such as when a user posts a form or an API request is being processed. The get
method can be used for requests with the following HTTP verbs:
The get
method will invoke the input
method on an instance of the Illuminate\Http\Request
class.
The get
method looks up the data based on the given $key
. A $default
value can be supplied and will be returned if the given $key
is not found in the request data.
Schema
MethodsThe Schema
facade defines one extra method. Facades define extra methods to provide simpler access to underlying sub-systems, or to call functions on other, related components.
connection($name)
The connection
method will return a new schema builder (Illuminate\Database\Schema\Builder
) instance for the given connection. The $name
is the name of the connection as it appears in the database configuration file.
It is possible to quickly resolve the class behind a facade. Facades expose a public method getFacadeRoot
which will return the instance of the underlying object the facade is forwarding method calls to. It is convenient that getFacadeRoot
returns an object instance because PHP's get_class
method can then be used to retrieve the fully-qualified name of the facade's underlying class implementation.
1// Getting the class name of the underlying facade instance.2$className = get_class(Auth::getFacadeRoot());
In the above code example, the $className
variable would contain the value Illuminate\Auth
\AuthManager
.
This method of determining a facade's underlying class can be expanded on to create a function that will list every facade's underlying class for the current Laravel installation:
1/** 2 * Generates an HTML table containing all registered 3 * facades and the underlying class instances. 4 * 5 * @return string 6 */ 7function getFacadeReferenceTable() 8{ 9 $html = '';10 11 // An array of all the facades that should be printed in the table.12 $facades = [13 'App', 'Artisan', 'Auth', 'Blade', 'Bus',14 'Cache', 'Config', 'Cookie', 'Crypt', 'DB',15 'Event', 'File', 'Hash', 'Input', 'Lang', 'Log',16 'Mail', 'Password', 'Queue', 'Redis', 'Redirect',17 'Request', 'Response', 'Route', 'Schema', 'Session',18 'Storage', 'URL', 'Validator', 'View'19 ];20 21 // Boilerplate HTML to open an HTML table.22 $html = '<table><thead><tr><th>Facade</th>';23 $html .= '<th>Underlying Class</th></tr><tbody>';24 25 foreach ($facades as $facade)26 {27 $html .= '<tr><td>',$facade,'</td><td>';28 $html .= get_class(call_user_func($facade.'::getFacadeRoot'));29 $html .= '</td></tr>';30 }31 32 // Boilerplate HTML to close an HTML table.33 $html .= '</tbody></table>';34 35 return $html;36}
∎
The following amazing people help support this site and my open source projects ♥️
If you're interesting in supporting my work and want to show up on this list, check out my GitHub Sponsors Profile.