Facades provide a "static" interface for classes available in the application's service container.
Laravel comes with many facades, and you may even be using them without knowing it!
xpower’s static interface (facades)
Prerequisite 1: We have a class (xpower) that has been bound to the service container
Prerequisite 2: We have registered this in the service provider Class (singleton method under regisrer in the service container)
5. Next, create the facade of xpower, which inherits the facade base class. The getFacadeAccessor method must be implemented. A string is returned, which is actually the name of the service provider's registered binding singleton (singleton method). You can write this name casually, ours here is xpower
<?php namespace App\Facades; use Illuminate\Support\Facades\Facade; class XP extends Facade { protected static function getFacadeAccessor() { return 'xpower'; } }
6. Then you need to register the facade category name in the configuration file config/app.php:
'aliases' => [ ...//其他门面类别名映射 'XP' => App\Facades\XP::class, ],
We can directly use XP::activate to activate xpower super power at this time
use the introduction of AppFacadesXP. Otherwise it cannot be found.
Analysis:
1.XP::activate first goes to the container to find the XP instance (already registered in the container), and returns the xpower string
2.xpower string has also been bound and registered to the container , and then return to the Xpower service instance
3. ::activate will actually call the __callstatic method in the base class facade, and then convert it to a call in the form of ->show().