问题描述
我正在创建一个在内部使用此 hashid package 的包。
我尝试了三个选项,但没有一个奏效。
-
版本 - 作曲家
"aliases": { "hashids": "Vinkla\\hashids\\Facades\\hashids" }
-
版本 - 在我的 ServiceProvider 中使用别名
class MyPackageServiceProvider extends ServiceProvider { public function register() { ... $this->app->alias(\Vinkla\hashids\Facades\hashids::class,'hashids'); }
-
版本 - 在我的 ServiceProvider 中使用 AliasLoader
class MyPackageServiceProvider extends ServiceProvider { public function register() { ... $loader = \Illuminate\Foundation\AliasLoader::getInstance(); $loader->alias('hashids',\Vinkla\hashids\Facades\hashids::class); }
Error: Call to undefined method Vinkla\hashids\Facades\hashids::encode()
内部
/** @test */
public something_to_test()
{
dd(\hashids::encode(1));
}
解决方法
好的,我找到了一个解决方案,但我仍然很困惑为什么会这样。
在我的“MyPackageServiceProvider”中,我需要添加:
$this->app->register(HashidsServiceProvider::class);
为什么我需要注册提供商?我以为作曲家正在处理工作。
最后只有这个有效:
$this->app->register(HashidsServiceProvider::class);
$loader = \Illuminate\Foundation\AliasLoader::getInstance();
$loader->alias('Hashids',\Vinkla\Hashids\Facades\Hashids::class);
其他版本效果不佳:(