Загрузка файлов поставщика в CakePHP 2.0

В настоящее время я обновляю один из наших проектов до CakePHP 2.0. К сожалению, «первая строка» кода создает проблемы, и я не могу найти решение этой проблемы.

В CakePHP 1.3 у меня был App::import("Vendor", "facebook"); перед тем, как будет определен класс AppController . Файл с ссылкой находится в /app/vendors/facebook/facebook.php (и включает в себя файл base_facebook.php ).

Я попробовал много разных способов включить файл в CakePHP 2.0 в соответствии с описанным здесь названием именования файлов и классов : Именование файлов и изменения загрузки классов в CakePHP 2.0

Я переименовал путь к app/Vendor/Facebook/Facebook.php или app/Vendor/Facebook/facebook.php и попробовал следующие методы:

 App::uses("Facebook", "Vendor/Facebook"); App::uses("Facebook", "Facebook"); App::uses("Facebook", "Vendor/Facebook/Facebook.php"); App::uses("Facebook", "Vendor"); 

Кто-нибудь еще находит способ ссылаться на файл поставщика? Из-за ленивой загрузки вышеописанные методы не запускают ошибку / предупреждение, поэтому отвратительно отлаживать это …

Поставщики не могут быть загружены с помощью App::uses() в CakePHP, так как CakePHP не может ожидать, что внешние библиотеки будут следовать тем же стандартам, что и имена папок и файлов. Вы все равно можете использовать App::import('Vendor', ...) как и в версии 1.3.

Теперь использование App::import() для поставщиков – это глупо, если вы думаете об этом. Это просто дорогая, многословная и очень глупая оболочка для require_once() .

В 2.0 мы фактически призываем людей использовать require или require_once для своих библиотек поставщиков. Вы можете получить расположение папки Vendor с помощью App::path('Vendor') или просто APP . 'Vendor' . DS APP . 'Vendor' . DS APP . 'Vendor' . DS .

Документация торта предлагает использовать App :: uses () include-files-with-app-import

Однако в нем также указано, есть ли у вас плагин non-stanard для использования App :: Import ()

 App::import('Vendor', 'phpQuery', array('file' => 'bariew/phpquery/phpQuery/phpQuery.php')); 

Предположим, что вы находитесь в файле поставщика /app/vendors/facebook/facebook.php .

Следующая строка должна делать то же самое, что и App :: import () в старой версии CakePHP

  require_once(ROOT . DS . 'app' . DS .'Vendor' . DS . 'facebook' . DS . 'src' . DS . 'facebook.php'); $facebookApi = new facebook();