我正在开发一个Laravel软件包,但在设置外观/别名时遇到问题。 即,我想有一个用于格式化货币的类,以便在后端和视图中我可以做Money::format(10)
并根据货币配置对其进行格式化。
因此,首先在主包提供程序中,我注册了一个帮助程序提供程序,在其中,我有:
public function register()
{
$this->app->singleton(PathToPackageHelpersMoney::class, function ($app) {
return new PathToPackageHelpersMoney();
});
$this->app->alias(PathToPackageHelpersMoney::class, 'money');
}
public function provides()
{
return [PathToPackageHelpersMoney::class, 'money'];
}
我的钱类很简单:
namespace PathToPackageHelpers;
class Money {
public static function format($amount) {
// format and return
}
}
现在,如果我只在控制器中放入use Money
,它不起作用,因此别名不起作用。单例工作,如果我在控制器中调用类作为PathToPackageHelpersMoney::format()
,它只实例化一次。
在我的观点中也是如此 - 如果我像{{ Money::format() }}
一样调用它不起作用,但使用完整路径{{ PathToPackageHelpersMoney::format() }}
它就可以工作。
我也做了一个门面类,但不明白在提供者中在哪里连接它?
namespace PathToPackageFacadesMoney;
use IlluminateSupportFacadesFacade;
class Money extends Facade
{
protected static function getFacadeAccessor()
{
return 'money';
}
}
我做错了什么?
我通过将别名添加到module.json的"别名"部分来实现这一点
{
"name": "YourModule",
"alias": "yourmodule",
"description": "",
"keywords": [],
"order": 0,
"providers": [
"Modules\YourModule\Providers\YourModuleServiceProvider"
],
"aliases":{
"money": "PathToPackage\Facades\Money\Money"
},
"files": []
}