Ошибка при установке omnipay в CodeIgniter

Я пытаюсь добавить omnipay в CodeIgniter (версия 2.2.4). Я выполнил инструкции по установке композитора, используя эту ссылку: https://philsturgeon.uk/blog/2012/05/composer-with-codeigniter/

но у меня такая ошибка:

Fatal error: Uncaught exception 'Omnipay\Common\Exception\RuntimeException' with message 'Class '\Omnipay\PayPal Express\Gateway' not found' in C:\xampp\htdocs\testserver\vendor\omnipay\common\src\Omnipay\Common\GatewayFactory.php:105 Stack trace: #0 [internal function]: Omnipay\Common\GatewayFactory->create('PayPal Express') #1 C:\xampp\htdocs\testserver\vendor\omnipay\common\src\Omnipay\Omnipay.php(103): call_user_func_array(Array, Array) #2 C:\xampp\htdocs\testserver\application\controllers\Test.php(18): Omnipay\Omnipay::__callStatic('create', Array) #3 C:\xampp\htdocs\testserver\application\controllers\Test.php(18): Omnipay\Omnipay::create('PayPal Express') #4 [internal function]: Test->Pay() #5 C:\xampp\htdocs\testserver\system\core\CodeIgniter.php(360): call_user_func_array(Array, Array) #6 C:\xampp\htdocs\testserver\index.php(203): require_once('C:\xampp\htdocs...') #7 {main} thrown in C:\xampp\htdocs\testserver\vendor\omnipay\common\src\Omnipay\Common\GatewayFactory.php on line 105 

Я уже следил за предложениями этого сообщения (установка CodeIgniter + omnipay ), но ни одно из их предложений не работает для меня.

Я использую codeigniter 2.2.4 и apache 5.4.19

Может ли кто-нибудь помочь мне решить эту проблему?

    Думаю, я это решил. Я обнаружил, что может произойти столкновение FCPATH . 'vendor' FCPATH . 'vendor' автозагрузка FCPATH . 'vendor' и «APPPATH». автозагрузка класса ядра. Если вы попытаетесь расширить свой контроллер из CI_ или MY_ префикса основного класса, я уверен, что это сработает. В другой руке, если вы попытаетесь использовать основной класс, который не начинается с CI_ или MY_ или что бы вы ни сконфигурировали, вы не смогли найти нужный класс из директории поставщика.

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

     function __autoload($class) { if(strpos($class, 'CI_') !== 0) { include_once( APPPATH . 'core/'. $class . EXT ); } } 

    или

     function __autoload($class) { if (substr($class,0,3) !== 'CI_') { if (file_exists($file = APPPATH . 'core/' . $class . EXT)) { include $file; } } } 

    Я поменял этот файл на этот файл:

     spl_autoload_register(function ($class) { if (substr($class,0,3) !== 'CI_') { if (file_exists($file = APPPATH . 'core/' . $class . EXT)) { include $file; } } }); 

    Просто протестирован и работает.

    Здесь все процессы для тех, кто это нуждается, шаг за шагом:

    1. Загрузите omnipay в каталог root / vandor. Если у вас нет других зависимостей поставщика, сделайте это с помощью вновь созданного файла composer.json расположенного рядом с файлом index.php со следующим кодом:

      { "require": { "omnipay/omnipay": "~2.0" } } 

    2. Перейдите в консоль в корневую папку вашего проекта, которая также включает в себя недавно созданный файл json.

    3. Запустите команду компоновщика команд

    4. Включите файл автозагрузки композитора перед загрузкой приложения. Один из способов сделать это ближе к концу файла index.php , прямо перед строкой

      require_once BASEPATH.'core/CodeIgniter.php'; 

    , введите следующий код:

     require_once __DIR__.'/vendor/autoload.php'; 

    5. В конце APPPATH . 'config/config.php' APPPATH . 'config/config.php' , добавьте этот фрагмент и к основным классам:

      spl_autoload_register(function ($class) { if (substr($class,0,3) !== 'CI_') { if (file_exists($file = APPPATH . 'core/' . $class . EXT)) { include $file; } } }); 

    6. В вашем контроллере в начале файла перед определением класса используйте необходимые классы поставщиков:

      <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); use \Omnipay\Omnipay; use \Omnipay\Common\GatewayFactory; class Test extends Back_Controller { function __construct() { parent::__construct(); } public function index() { var_dump(new Omnipay); var_dump(new GatewayFactory); } }