Загрузка файлов продавца в CakePHP 2.0 - PullRequest
34 голосов
/ 17 ноября 2011

В настоящее время я обновляю один из наших проектов до 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");

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

Ответы [ 3 ]

53 голосов
/ 17 ноября 2011

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

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

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

0 голосов
/ 26 января 2017

Предположим, что ваш файл поставщика находится здесь /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();
0 голосов
/ 26 августа 2016

Cake документация предлагает использовать App :: использовании () включая-файлы-с-приложение-импорт

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

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