Php 使用Laravel 8中的facade创建自定义包
我正在尝试开发一个新的Laravel包,通过Composer本地安装 以下是我的步骤:Php 使用Laravel 8中的facade创建自定义包,php,laravel,package,laravel-facade,Php,Laravel,Package,Laravel Facade,我正在尝试开发一个新的Laravel包,通过Composer本地安装 以下是我的步骤: 我使用composer create project Laravel/Laravel my application安装了一个新的Laravel应用程序 我在根目录中创建了一个包含以下内容的新目录: packages/randolf/custom-package/composer.json { “名称”:“randolf/定制包”, “说明”:“我的新自定义包”, “类型”:“库”, “许可证”:“麻省理工
- 我使用
composer create project Laravel/Laravel my application安装了一个新的Laravel应用程序
- 我在根目录中创建了一个包含以下内容的新目录:
packages/randolf/custom-package/composer.json
{ “名称”:“randolf/定制包”, “说明”:“我的新自定义包”, “类型”:“库”, “许可证”:“麻省理工学院”, “要求”:{}, “自动加载”:{ “psr-4”:{ “Randolf\\CustomPackage\\”:“src/” } }, “额外”:{ “拉雷维尔”:{ “提供者”:[ “Randolf\\CustomPackage\\CustomPackageServiceProvider” ], “别名”:{ “CustomPackage”:“Randolf\\CustomPackage\\Facades” } } } }
packages/randolf/CustomPackage/src/CustomPackage.php
调整
中的别名,使其指向外观而不是名称空间:composer.json
"CustomPackage": "Randolf\\CustomPackage\\Facades\\CustomPackageFacade"
您忘记将实际外观的类名添加到命名空间中,您要在composer.json文件中添加别名。。。您在名称空间中使用了别名,而不是facade itselfNice教程!但是您正在将方法
作为静态调用,因此需要将其定义为静态:sayHi()
⇒public function sayHi()
。为什么要在提供者的public static function sayHi()
方法中设置register()
?不使用它似乎也很好…@DevonDahon这是一个在Laravel中被称为$this->app->bind
的功能。您可以将非静态方法作为静态方法调用。首先在提供程序中用名称绑定类的新实例(Facades
,在本例中)。然后,创建返回相同名称的Facade(custompackage
,从而返回类的实例),最后,在CustomPackageFacade
中注册并别名到Facade。因此,您调用composer.json
,它与CustomPackage::sayHi()
(新的CustomPackage())->sayHi()相同。更多信息: