我正在开发一个Laravel软件包,但在设置外观/别名方面遇到了麻烦。即我希望有一个格式化钱的类,所以在后端和视图中我可以Money::format(10)
并根据货币配置进行格式化。
所以,首先在主程序包提供程序中我注册了一个HelpersProvider并在其中,我有:
public function register()
{
$this->app->singleton(\PathToPackage\Helpers\Money::class, function ($app) {
return new \PathToPackage\Helpers\Money();
});
$this->app->alias(\PathToPackage\Helpers\Money::class, 'money');
}
public function provides()
{
return [\PathToPackage\Helpers\Money::class, 'money'];
}
我的Money课程很简单:
namespace PathToPackage\Helpers;
class Money {
public static function format($amount) {
// format and return
}
}
现在如果我只在我的控制器中放置use Money
它不起作用,所以别名不起作用。单例工作但是,如果我在控制器中将类称为\PathToPackage\Helpers\Money::format()
,它只被实例化一次。
我的观点相同 - 如果我调用{{ Money::format() }}
它不起作用,但使用完整路径{{ \PathToPackage\Helpers\Money::format() }}
它正在运作。
我也做过门面课,但是不明白在提供者的哪个地方挂钩?
namespace PathToPackage\Facades\Money;
use Illuminate\Support\Facades\Facade;
class Money extends Facade
{
protected static function getFacadeAccessor()
{
return 'money';
}
}
我做错了什么?