Composer - оформить заказ с помощью require_once

У меня есть проблема, включая частную API-библиотеку Google AdWords версии 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/"
        ]
    }
}

Есть ли общий способ иметь дело с утверждениями 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 ответ

Да, эти операторы обычно зависят от правильности установки include_path, и вы можете сделать это и с помощью Composer. См. https://getcomposer.org/doc/04-schema.md#include-path

Лучшим способом было бы исправить основную проблему в коде, то есть удалить эти операторы.

Кроме того, ваше собственное программное обеспечение не должно объявлять автозагрузку для этой библиотеки, как вы делаете сейчас (т.е. объявлять автозагрузку внутри каталога vendor). Вы объявляете информацию о пакете вручную, и этот пакет должен также содержать информацию о автозагрузке, а также параметр пути включения. См пример smarty в документации: https://getcomposer.org/doc/05-repositories.md#package-2

Другие вопросы по тегам