Composer - 包含require_once的Checkout包

时间:2014-02-19 12:36:46

标签: composer-php google-adwords adwords-api-v201109

我有一个问题,包括通过composer的私人谷歌adwords api-library版本4.6.0。 在这个库中有一些文件包含require_once语句,这些语句本身就会抛出错误,如:

PHP Fatal error: main(): Failed opening required 'Google/Api/Ads/Common/Util/Logger.php'

Composer.json看起来像:

"repositories": [
        {
            "type": "package",
            "package": {
                "name": "google/adwords",
                "version": "4.6.0",
                "source": {
                    "url": "svn-url/3.3.5/google_lib/",
                    "type": "svn",
                    "reference": "Apility/"
                }
            }
        }
    ]

"require": {
        "google/adwords": "4.6.0"
    }
    "autoload": {
        "classmap": [
            "vendor/google/"
        ]
    }
}

是否有一般方法在库中为composer处理require_once语句?

此致 启


我无法删除require语句,因为它是一个库,当更新到来时,所有更改都消失了。

我试过了:

"repositories": [
        {
            "type": "package",
            "package": {
                "name": "google/adwords",
                "version": "4.6.0",
                "source": {
                    "url": "https://subversion.unister.lan/keyword-tool/trunk/API_2009/google_lib/",
                    "type": "svn",
                    "reference": "Apility/"
                },
                "autoload": {
                    "classmap": ["src/"]
                },
                "include-path": ["src/"]
            }
        }
    ],
    "require": {
        "google/adwords": "4.6.0",
    }

但是,除了库的类没有添加到autoload_classmap.php并且找不到库。

1 个答案:

答案 0 :(得分:0)

是的,这些语句通常取决于正确设置的include_path,您也可以使用Composer执行此操作。见https://getcomposer.org/doc/04-schema.md#include-path

更好的方法是修复代码中的底层问题,即删除这些语句。

此外,您自己的软件不应像现在那样声明该库的自动加载(即在供应商目录中声明自动加载)。您手动声明包信息,该包还应包含自动加载信息以及包含路径设置。请参阅文档中的智能示例:https://getcomposer.org/doc/05-repositories.md#package-2