Как Zend Framework с помощью Propel ORM

Я хотел бы интегрировать Propel с Propel Zend framework . Я видел интеграцию доктрины в прошлом, но этот пост говорит, что кажется, что продвижение сделано немного по-другому.

У Propel уже есть две вещи: во-первых, Propel включает в себя собственный автозагрузчик, что означает, что мне не пришлось пытаться заставить Propel в Zend Framework файловой системы Zend Framework . Во-вторых, Propel разработан, чтобы вы могли легко помещать файлы в любом месте, если вы правильно обновляете свой include path . Это значительно облегчило процесс, чем я думал.

Но сообщение не вникает в полную информацию о том, как закончить его. Я предполагаю, что мне нужно изменить Zend Bootstrap.php и application.ini (я использую последний Zend 1.10.8 ), но мне трудно найти сообщение о последней версии Zend с последним версия Propel .

Кто-нибудь может прокомментировать, как это сделать самым плавным образом?

другой вопрос: имеет ли Propel интерфейс командной строки или мне не нужен интерфейс командной строки для propel, если я использую интерфейс командной строки Zend ?

Я не использую Propel вне Symfony, но из того, что знаю о Propel, но я думаю, что что-то вроде следующего будет работать на материал времени исполнения:

В вашем бутстрапе

 public function initPropel() { require_once 'Propel.php'; Propel::init($this->getOptions('propelConfig')); // so we can get the connection from the registry easily return Propel::getConnection(); } 

В вашем приложении application.xml (адаптируйте к ini, если это то, что вы предпочитаете)

 <applicationConfiguration xmlns:zf="http://framework.zend.com/xml/zend-config-xml/1.0/"> <production> <!-- other stuff --> <includePaths> <propelRuntime><zf:const zf:name="APPLICATION_PATH" />/../library/propel/runtime</propelRuntime> </includePaths> <propelConfig><zf:const zf:name="APPLICATION_PATH" />/configs/propel-runtime.php</propelConfig> <!-- other stuff --> </production> </applicationConfiguration> 

Конечно, это действительно не полная интеграция, насколько мне известно … но этого должно быть достаточно, чтобы вы могли работать без особых хлопот. Если это будет стоить вам инвестиций в этот проект, я бы пошел дальше и сделаю Application Resource. Запустите сборку propel и посмотрите на скомпилированный php-массив. Затем сопоставьте это с xml или ini и вставьте его непосредственно в конфигурационный файл приложения. Затем измените свой initPropel чтобы обработать его так:

 public function initPropel() { require_once 'Propel.php'; Propel::setConfiguration($this->getOptions('propelConfig')); Propel::initialize(); // so we can get the connection from the registry easily return Propel::getConnection(); } 

Если бы вы захотели, вы даже не могли бы напрямую загрузить массив как проанализированный из файла конфигурации, а вместо этого создать объект PropelConfiguration и программно установить все свои параметры, а затем передать это на setConfiguration .

Что касается инструментов сборки, я обнаружил, что интеграция с Zend_Tool является испытанием, поэтому я склонен полагаться на phing или пользовательские сценарии оболочки для всего этого. Если вы не планируете использовать Propel для многих проектов, возможно, не успеваете реализовать этот уровень интеграции. Я сделал это с Doctrine 1.xa, пока я вернулся, и мне потребовалось пару недель, чтобы работать со всеми изломами 🙂

Ты пробовал

  • Интеграция Propel с Zend Framework
  • Zend Framework и Propel
  • Интеграция Propel с Zend Framework

Я помещаю библиотеку Propel в «Your Zend_Project / library» с папкой Propel, в которой есть папка времени выполнения.

Затем я помещаю этот кусок кода в свой bootstrap.php.

 protected function _initPropel() { //require Propel Library require '../library/Propel/runtime/lib/Propel.php'; //initialize Propel configuration Propel::init(APPLICATION_PATH . '/configs/orm-conf.php'); //initialize Propel connection Propel::initialize(); //return Propel Connection return Propel::getConnection(); } 

Мои файлы настроек Propel находятся в «Your Zend Project / application / configs»

Вам также необходимо изменить файл index.php, чтобы он нашел созданные вами модели ORM:

set_include_path (implode (PATH_SEPARATOR, массив (realpath (APPLICATION_PATH. '/../library'), realpath (APPLICATION_PATH. '/ models'), get_include_path (),)));

Вы размещаете свои модели в названии «Zend Project / application / Models / database», которое задано в вашем schema.xml свойством xml в теге «database name =» orm ».

Просто попробуйте добавить init propel в файл index.php, но ПЕРЕД настройкой автозагрузки. В этом случае Zend_Autoloader не может взаимодействовать с механизмом автозагрузки Propel. Для меня это нормально работает, но я не уверен, что это хороший дизайн …)