外墙(Facades)
Facade为应用程序服务容器中可用的类提供static接口。 Laravel facades充当服务容器中底层类的static proxies ,提供简洁,富有表现力的语法,同时保持比传统静态方法更多的可测试性和灵活性。
如何创建Facade
以下是在Laravel中创建Facade的步骤 -
Step 1 - 创建PHP类文件。
Step 2 - 将该类绑定到服务提供者。
Step 3 - 将ServiceProvider注册到
Config\app.php作为提供者。
Step 4 - 创建此类扩展到的类
lluminate的\ Support \外立面\门面。
Step 5 - 将Step 5点注册到Config\app.php作为别名。
门面类参考
Laravel船上有许多外墙。 下表显示了内置的Facade类引用 -
正面 | 类 | 服务容器绑定 |
---|---|---|
App | Illuminate\Foundation\Application | app |
Artisan | Illuminate\Contracts\Console\Kernel | artisan |
Auth | Illuminate\Auth\AuthManager | auth |
验证(实例) | Illuminate\Auth\Guard | |
Blade | Illuminate\View\Compilers\BladeCompiler | blade.compiler |
Bus | Illuminate\Contracts\Bus\Dispatcher | |
Cache | Illuminate\Cache\Repository | cache |
Config | Illuminate\Config\Repository | config |
Cookie | Illuminate\Cookie\CookieJar | cookie |
Crypt | Illuminate\Encryption\Encrypter | encrypter |
DB | Illuminate\Database\DatabaseManager | db |
DB(实例) | Illuminate\Database\Connection | |
Event | Illuminate\Events\Dispatcher | events |
File | Illuminate\Filesystem\Filesystem | files |
Gate | Illuminate\Contracts\Auth\Access\Gate | |
Hash | Illuminate\Contracts\Hashing\Hasher | hash |
Input | Illuminate\Http\Request | request |
Lang | Illuminate\Translation\Translator | translator |
Log | Illuminate\Log\Writer | log |
Illuminate\Mail\Mailer | mailer | |
Password | Illuminate\Auth\Passwords\PasswordBroker | auth.password |
Queue | Illuminate\Queue\QueueManager | queue |
队列(实例) | Illuminate\Queue\QueueInterface | |
队列(基类) | Illuminate\Queue\Queue | |
Redirect | Illuminate\Routing\Redirector | redirect |
Redis | Illuminate\Redis\Database | redis |
Request | Illuminate\Http\Request | request |
Response | Illuminate\Contracts\Routing\ResponseFactory | |
Route | Illuminate\Routing\Router | router |
Schema | Illuminate\Database\Schema\Blueprint | |
Session | Illuminate\Session\SessionManager | session |
会话(实例) | Illuminate\Session\Store | |
Storage | Illuminate\Contracts\Filesystem\Factory | filesystem |
URL | Illuminate\Routing\UrlGenerator | url |
Validator | Illuminate\Validation\Factory | validator |
验证者(实例) | Illuminate\Validation\Validator | |
View | Illuminate\View\Factory | view |
查看(实例) | Illuminate\View\View |
例子 (Example)
Step 1 - 通过执行以下命令创建名为TestFacadesServiceProvider的服务提供者。
php artisan make:provider TestFacadesServiceProvider
Step 2 - 成功执行后,您将收到以下输出 -
Step 3 - 在App/Test创建一个名为TestFacades.php的类。
App/Test/TestFacades.php
<?php
namespace App\Test;
class TestFacades{
public function testingFacades(){
echo "Testing the Facades in Laravel.";
}
}
?>
Step 4 - 在“App/Test/Facades”创建一个名为“TestFacades.php”的Facade类。
App/Test/Facades/TestFacades.php
<?php
namespace app\Test\Facades;
use Illuminate\Support\Facades\Facade;
class TestFacades extends Facade {
protected static function getFacadeAccessor() { return 'test'; }
}
Step 5 - 在App/Test/Facades.创建一个名为TestFacadesServiceProviders.php的Facade类App/Test/Facades.
App/Providers/TestFacadesServiceProviders.php
<?php
namespace App\Providers;
use App;
use Illuminate\Support\ServiceProvider;
class TestFacadesServiceProvider extends ServiceProvider {
public function boot() {
//
}
public function register() {
App::bind('test',function() {
return new \App\Test\TestFacades;
});
}
}
Step 6 - 在文件config/app.php添加服务提供者,如下图所示。
config/app.php
Step 7 - 在文件config/app.php添加别名,如下图所示。
config/app.php
Step 8 - 在app/Http/routes.php.添加以下行app/Http/routes.php.
app/Http/routes.php
Route::get('/facadeex', function(){
return TestFacades::testingFacades();
});
Step 9 - 访问以下URL以测试Facade。
http://localhost:8000/facadeex
Step 10 - 访问URL后,您将收到以下输出 -