Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 编写器自动加载供应商类_Php_Json_Composer Php_Autoload - Fatal编程技术网

Php 编写器自动加载供应商类

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": ... } 和我的

我有两个包裹

(A) (B)

B需要A

现在我在我的项目中使用B包。但我发现类“erayalakese\Envato\u Update\u Checker”(包B)未找到错误

这是我的composer.json文件

{
    "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更新检查器


在您的主要项目中:

  • 需要主项目的
    composer.json
    中的“updater”包
    • 更新程序包通过它的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"]
    }
}