在Laravel中使用静态方法的Facades与Class
我环顾了一下Laravel框架和他们的一些产品,我注意到Cashier使用的是静态方法的Casheir类,而Socialite则用作facade 以这种或那种方式构建它有什么好处/坏处,或者根本没有好处/坏处?在Laravel中使用静态方法的Facades与Class,laravel,class,static,package,facade,Laravel,Class,Static,Package,Facade,我环顾了一下Laravel框架和他们的一些产品,我注意到Cashier使用的是静态方法的Casheir类,而Socialite则用作facade 以这种或那种方式构建它有什么好处/坏处,或者根本没有好处/坏处? 我想自己构建一些东西,但如果将其构建为facade是一个更好的解决方案,我不想开始使用静态方法将其构建为类。当您可能需要多个实现时,可以通过facade定义一个接口来简化代码 使用静态方法将其构建为类: 当您有多个类时,您必须执行以下操作: CashierOne::method, Cas
我想自己构建一些东西,但如果将其构建为facade是一个更好的解决方案,我不想开始使用静态方法将其构建为类。当您可能需要多个实现时,可以通过facade定义一个接口来简化代码 使用静态方法将其构建为类: 当您有多个类时,您必须执行以下操作:
CashierOne::method, CashierTwo::method ....
用作门面:
根据绑定到容器的内容切换实现
您只需通过接口调用:
// Define a Cashier Facade
class Cashier extends Facade
{
/**
* Get the registered name of the component.
*
* @return string
*/
protected static function getFacadeAccessor()
{
return 'cashier';
}
}
// In CashServiceProvider
$this->app->singleton('cashier', function ($app) {
return new CashierManager ($app);
});
// In CashierManager
public function gateway($name = null)
{
// get cashier implementation by name
}
public function __call($method, $parameters)
{
return $this->gateway()->$method(...$parameters);
}
// In Controller
Cashier::method
此外,外观更易于测试,检查: