问题描述
致谢: 首先,这是我的第一篇求助文章,因为我浏览了很多有关stackoverflow和其他资源的文章,但找不到解决方法。
问题听起来很熟悉,但我只是想不通,也许是因为我现在坚持了2天。另一个注意事项,这是我的第一个程序包,是的,我不是100%知道自己在做什么。
结构:
- laravel-project
- ...
- packages
- my-custom-package
- src
- MyCustomPackageServiceProvider.PHP
- composer.json
- public
- resources
- routes
- ...
- composer.json
所以这是基本的Laravel 5.8 +在内部添加的package文件夹中,用于本地软件包的分发(它也已移至repo)
当前代码(简化为其实际工作项目):
文件:laravel-project / packages / my-custom-package / composer.json
{
"name": "company/my-custom-package","type": "library","require": {
"PHP": ">=7.2",},"require-dev": {
"ext-curl": "*"
},"authors": [
{
"name": "John Smith","email": "[email protected]"
}
],"autoload" : {
"prs-4": {
"Company\\MyCustomPackage\\": "src/"
}
},"minimum-stability": "dev"
}
文件:laravel-project / packages / my-custom-package / src / MyCustomPackageServiceProvider.PHP
<?PHP
namespace Company\MyCustomPackage;
use Illuminate\Support\ServiceProvider;
class MyCustomPackageServiceProvider extends ServiceProvider {
public function boot()
{
$this->loadRoutesFrom(__DIR__ . '/routes/web.PHP');
$this->loadMigrationsFrom(__DIR__ . '/database/migrations');
}
public function register()
{
}
}
文件:laravel-project / composer.json
{
"name": "laravel/laravel","type": "project","description": "The Laravel Framework.","keywords": [
"framework","laravel"
],"license": "MIT","repositories": [
{
"type": "path","url": "~/testlaravel/packages/my-custom-package","options": {
"symlink": true
}
}
],"require": {
"PHP": "^7.1.3","fideloper/proxy": "^4.0","laravel/framework": "5.8.*","laravel/tinker": "^1.0","guzzlehttp/guzzle": "^6.3.3","company/my-custom-package": "dev-master"
},"require-dev": {
"beyondcode/laravel-dump-server": "^1.0","filp/whoops": "^2.0","fzaninotto/faker": "^1.4","mockery/mockery": "^1.0","nunomaduro/collision": "^3.0","PHPunit/PHPunit": "^7.5"
},"config": {
"optimize-autoloader": true,"preferred-install": "dist","sort-packages": true
},"extra": {
"laravel": {
"dont-discover": []
}
},"autoload": {
"psr-4": {
"App\\": "app/"
},"classmap": [
"database/seeds","database/factories"
]
},"autoload-dev": {
"prs-4": {
"Company\\MyCustomPackage\\": "~/testlaravel/packages/my-custom-package/src"
}
},"minimum-stability": "dev","prefer-stable": true,"scripts": {
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump","@PHP artisan package:discover --ansi"
],"post-root-package-install": [
"@PHP -r \"file_exists('.env') || copy('.env.example','.env');\""
],"post-create-project-cmd": [
"@PHP artisan key:generate --ansi"
]
}
}
说明::〜/ testlaravel /是Vagrant机器中项目原始位置的文件夹路径url是“ packages / my-custom-package”,但更改了此扩展版本,只是为了使它正常工作
文件::config / app.PHP(添加的服务提供商)
Company\MyCustomPackage\MyCustomPackageServiceProvider::class
问题: 首先,我将这个东西设置为本地,并且它的工作原理如下: “ 从头开始创建Laravel Composer程序包以上传到packagist ”作者: Bitfumes ,并且程序包有效,我可以运行composer update,然后将其添加到app.PHP我的程序包中,我可以运行自定义路线,并且一切正常。 之后,我将包移至git repo,并以同样的方式要求它,只是将“存储库”字段更改为
"repositories": [
{
"type": "vcs","url": "[email protected]:john/my-custom-package.git"
}
]
,当您运行composer update时,您会看到,在供应商/文件中之后,您都有包含文件夹的Company文件夹,但是,如果您离开config / app.PHP服务提供商,它会开始抱怨说
*Class 'Company\MyCustomPackage\MyCustomPackageServiceProvider' not fo und*
经过一段时间的f ***之后,我发现是的,我的autoload_classmap(不能记住原始帖子)不包含我的包,所以今天我决定再次尝试在本地查看是否存在差异,是否将其添加到地图文件中,现在我在需要本地软件包时遇到相同的错误,我无法使其正常工作。
我一直在删除供应商文件夹和锁定文件,作曲家dump-autoload,但这没有帮助。我只是觉得还有什么超级缓存吗?
!!更新!! 我什至不更加困惑。在composer.json中(我现在在实际项目存储库上测试过的一个项目,现在需要另外2个本地git存储库)。因此,我现在在vendor / Company / {4packages}中有4个软件包,我比较了所有4个软件包composer.json,虽然没有发现任何重大区别,但是除了我的以外,所有其他软件包都已加载到自动加载映射中。我只能看到的主要区别是,这两个软件包不使用ServiceProvider.PHP文件,但我看不到它如何影响或改变事物。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)