不能使别名和外墙在Laravel Package

时间:2018-04-16 12:06:39

标签: php laravel singleton alias facade

我正在开发一个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';
    }
}

我做错了什么?

0 个答案:

没有答案