Php 编写器自动加载供应商类
我有两个包裹 (A) (B) B需要A 现在我在我的项目中使用B包。但我发现类“erayalakese\Envato\u Update\u Checker”(包B)未找到错误 这是我的composer.json文件Php 编写器自动加载供应商类,php,json,composer-php,autoload,Php,Json,Composer Php,Autoload,我有两个包裹 (A) (B) B需要A 现在我在我的项目中使用B包。但我发现类“erayalakese\Envato\u Update\u Checker”(包B)未找到错误 这是我的composer.json文件 { "name": "", "description": "", "require": { "erayalakese/envato-update-checker": "^1.3" }, "authors": ... } 和我的
{
"name": "",
"description": "",
"require": {
"erayalakese/envato-update-checker": "^1.3"
},
"authors": ...
}
和我的项目文件:
<?php
require_once(__DIR__.'/vendor/autoload.php');
new erayalakese\Envato_Update_Checker(...);
但我不确定我是否真的需要将供应商文件夹添加到自动加载。我希望它会自动加载我的供应商
你能告诉我我错过了什么吗 您必须更改两个包的
composer.json
两个包都需要定义一个自动加载
部分
参考:
erayalakese/envato市场api 现在这个包有一个自动加载的类映射定义,它由一个PHP文件组成。当您安装composer时,软件包的自动加载定义将添加到composer自动加载程序中 另一个软件包使用相同的游戏: erayalakese/envato更新检查器
在您的主要项目中:
- 需要主项目的
中的“updater”包composer.json
- 更新程序包通过它的require部分包含api包(因此您可以同时获得这两个)
- 添加
require_once(uuu DIR_uu.'/vendor/autoload.php')代码>到项目引导
- 通过Composer Autoloader享受课程:
new erayalakese\Envato_Update_Checker(…)代码>
删除此行:
这样不行,您必须在调用方法之前要求并初始化该类。或者您可以使用PSR-4并引用具有命名空间的类。我使用classmap作为临时解决方案。当我使用classmap时,它不需要一个接一个地学习。非常感谢。我还没试过,但我有个问题。为什么我需要主项目的composer.json中的两个项目?因为B包已经需要A包了。如果我只需要B包,它会不会工作?是的,我的错。您是正确的Eray,因为您在更新程序中已经有了
“require”:{“erayalakese/envato market api”:“^1.0”}
。当您在主项目中需要更新程序时,也会得到API。
"autoload": {
"classmap": ["vendor/"]
}
{
"name": "erayalakese/envato-market-api",
"description": "Envato Market API to verify and download Envato purchases",
"authors": [
{
"name": "Eray Alakese",
"email": "erayalakese@gmail.com"
}
],
"require": {},
"license": "GPL v2",
"autoload": {
"classmap": ["Envato_Market_API.php"]
}
}
{
"name": "erayalakese/envato-update-checker",
"description": "Checks Envato WordPress plugins' updates and download its if any update available",
"require": {
"erayalakese/envato-market-api": "^1.0"
},
"authors": [
{
"name": "Eray Alakese",
"email": "erayalakese@gmail.com"
}
],
"license": "GPL v2",
"autoload": {
"classmap": ["Envato_Update_Checker.php"]
}
}