В тюбике сконцентрированна зубная паста. Во внешних библиотеках - классы, функции и константы. Кто сможет открыть тюбик и выдавить его в CakePHP?

В прошлом посте про GeoIP я использовал простую конструкцию в стиле plain php для подключения внешнего модуля к CakePHP. Конечно же, это не очень красиво, и как-то не совсем соотвествует hi-level oop-based framework программированию.

Что интересно, после небольшого загугления выяснилось, что в общем-то описания использования App::Import особенно нет, а если и есть, то в основном это слова о том, что эта конструкция заменяет старый и уже устаревший vendor(..)

Итак, что же делать?

Общая структура вызова имеет следующий вид:

App::import($type, $name, $parent, $search, $file, $return);

Идея очень проста. Вам необходимо положить ваши внешние библиотеки в /app/vendors/. Если ваш внешний файл не содержит классов, то он будет просто подключён в стиле классического import’а. А вот если в файле есть описание класса, то можно указать какой именно класс вы ходите импортировать.
Вот несколько примеров взятых с оффициального сайта:

//Загрузка файла/geshi.php
App::import('Vendor', 'geshi');
 
//Загрузка файла/flickr/flickr.php
App::import('Vendor', 'flickr/flickr');
 
//Загрузка файла/some.name.php
App::import('Vendor', 'SomeName', array('file' => 'some.name.php'));
 
//Загрузка файла/services/well.named.php
App::import('Vendor', 'WellNamed', array('file' => 'services'.DS.'well.named.php'));

Из личного опыта скажу вот что:
при попытке импорта файла /ipernity/api.php (о котором я расскажу в одном из следующих постов) загрузка прошла без ошибок, но класс я так и не увидел. По этому я модифицировал вызов следующим образом:

App::import('Vendor','Iper_API',array('file'=>'ipernity/api.php'));

Теперь класс Iper_API был успешно импортирован и я смог создать его экземпляр.

Bookmark and Share
This entry was posted on Tuesday, December 30th, 2008 and is filed under PHP-разработка, cakephp. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
free counters

Designed by Gabfire
Rambler's Top100