Как использовать автозагрузку композитора, когда я уже использую автозагрузку? - PullRequest
0 голосов
/ 29 июня 2018

У меня есть файл config.php, в котором я использую автозагрузку для всех своих личных классов

function __autoload($class_name) {
    include __DIR__.'/classes/'.$class_name . '.php';
}

Мне нужно теперь использовать сторонний класс от композитора, который находится в /vendor/guzzlehttp.

Итак, мой код теперь:

require('Config.php'); // my config file: this is used in ALL site
require 'vendor/autoload.php'; // the copmoser 
$client = new GuzzleHttp\Client([]); // call to the 3rd party class installed by composer

Что вызывает ошибку 404: php ищет GuzzleHttp в / classes

Uncaught Error: класс 'GuzzleHttp \ Client' не найден

Понятия не имею, как это решить: мне нужно держать свои собственные классы в / classes

Мне нужно их автоматически загрузить, потому что все веб-сайты используют это.

Итак: как я могу использовать классы, установленные composer на моем сайте?

Мой контент composer.json:

{
    "require": {
        "firebase/php-jwt": "^5.0"
    }
}

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

__autoload() устарело и, по-видимому, несовместимо с современной практикой, spl_autoload_register(), которую использует Composer.

function myAutoload($class_name) {
    include __DIR__.'/classes/'.$class_name . '.php';
}
spl_autoload_register('myAutoload');

Но вам действительно следует обратить внимание на перемещение ваших зависимостей в тот менеджер зависимостей, который у вас уже есть, Composer.

Для внешних библиотек, которые уже есть в Composer, например, Guzzle: https://packagist.org/packages/guzzlehttp/guzzle

Для внутренне развитых библиотек: https://getcomposer.org/doc/04-schema.md#autoload

Редактировать: при втором взгляде нет причин @ Ответ Девона не сработает.

0 голосов
/ 29 июня 2018

Автозагрузчики могут быть просто сложены, но вы захотите проверить наличие файла, прежде чем пытаться его включить.

Однако, если вы уже используете Composer, просто дайте Composer обработать автозагрузку.

Добавьте ссылку на ваше глобальное пространство имен, загружаемое из каталога классов в разделе автозагрузки PSR-4 вашего composer.json:

"autoload": {
    "psr-4": {
        "": "classes"
    }
},
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...