【发布时间】:2023-01-24 21:13:57
【问题描述】:
我正在尝试开发自己的自定义 Laravel PHP 包并将其发布在作曲家中。在我的包裹composer.json 我有这个:
"autoload": {
"psr-4": {
"Oliverbj\\Cord\\": "src",
"Oliverbj\\Cord\\Database\\Factories\\": "database/factories"
}
},
结构是:
src
- Cord.php
在 Cord.php 文件中:
namespace Oliverbj\Cord;
然后我使用 composer 安装包:
composer require oliverbj/cord
在我的应用程序中,我尝试这样使用它:
use Oliverbj\Cord;
但我收到此错误:
找不到类“Oliverbj\Cord”
这是我的
CordServiceProvider.phppublic function configurePackage(Package $package): void { /* * This class is a Package Service Provider * * More info: https://github.com/spatie/laravel-package-tools */ $package ->name('cord') ->hasConfigFile() ->hasViews() ->hasMigration('create_cord_table') ->hasCommand(CordCommand::class); } public function packageRegistered() { $this->app->singleton('cord', function () { return new Cord(); }); }
【问题讨论】:
-
use Oliverbj\Cord\Cord; -
如果我那样使用它,我就不能调用像“Cord::myMethod()”这样的方法:
Non-static method Oliverbj\Cord\Cord::myMethod() cannot be called statically- 我认为 PSR4 应该使用Oliverbj\Cord加载? -
您注册了
Oliverbj\Cord的命名空间 - 该命名空间中名为Cord的类的完全限定名称为Oliverbj\Cord\Cord。无法静态调用非静态方法是一个不相关的错误 -
听起来那个类不包含这样的静态方法?