Ответ 1
В соответствии с руководством Cake App::import()
он сопоставим с тем, как работает require_once()
. Насколько я понимаю, вы загружали бы классы с помощью файлов App:uses()
и Vendor с помощью App:import()
.
В документации API говорится следующее по теме:
Все классы, загруженные в прошлом с помощью
App::import(‘Core’, $class)
, должны быть загружены с помощьюApp::uses()
, ссылаясь на правильный пакет. Это изменение обеспечило большую производительность для платформы.
- Метод больше не ищет рекурсивные классы, он строго использует значения для путей, определенных в
App::build()
- Невозможно загрузить
App::import('Component', 'Component')
useApp::uses('Component', 'Controller');
.- Использование
App::import('Lib', 'CoreClass');
для загрузки основных классов уже невозможно. Импорт несуществующего файла с указанием неправильного типа или имени пакета илиnull
для параметров$name
и$file
приведет к ложному возврату.App::import('Core', 'CoreClass')
больше не поддерживается, используйтеApp::uses()
вместо этого, и пусть автозагрузка остальных классов сделает все остальное.- Загрузка файлов поставщика не выглядит рекурсивно в папке поставщиков, она также не будет преобразовывать файл в подчеркнутый, как это было в прошлом.
В руководстве по миграции также есть некоторые вещи, чтобы сказать о App:uses()
и является хорошей отправной точкой для сравнения лучших практик для 2.0 с более старыми методами от 1.3 и ниже.
Этот связанный с этим вопрос касается загрузки файлов Vendor в Cake 2.0, я не могу проверить утверждение Хосе Лоренцо о том, что App:import()
является "глупой оболочкой" для require_once()
, а также утверждение, что это предпочтительный способ включения файлов. Единственное, что я могу найти для последнего, - это стандарты кодирования для вкладчиков Cake, а именно: разработчики вносят вклад в ядро Cake, а не приложения, построенные на основе.
ИЗМЕНИТЬ
Скажем, вы хотите импортировать Twitter OAuth library, находящийся в Vendor/twitter
, файл основного класса twitteroauth.php
в Vendor/twitter/twitteroauth/twitteroauth.php
:
App::import('Vendor', 'twitteroauth', array('file' => 'twitter'.DS.'twitteroauth'.DS.'twitteroauth.php'));