Intereting Posts
Проблема с будущей страницей WordPress (не отображается) Laravel Eloquent ORM returnig stdClass вместо реальной модели PHP / Javascript: запоминание состояния полей формы и формы с помощью файлов cookie Игнорировать слэш при использовании шифрования в кодеигниторе Возвращаемое значение конструктора? set_error_handler Не работает Как я хочу, чтобы он работал Как обновить строку с несколькими изображениями, которые имеют только одно изображение, вставленное первоначально в php Как обрабатывать исключения и сообщения об ошибках в Laravel 5? Как создавать сеансы с использованием PHP? Как объединить два массива, создав новый массив и напечатав результат? (с кодами) Использование рекурсии для создания навигации Анализ синтаксиса навигации XML с помощью PHP Указание переменной типа в Netbeans (PHP) настройка wampserver после установки, чтобы включить ssl «Неустранимая ошибка: невозможно обновить <function>»

Интеграция доктрины с приложением Zend Framework 1.8

Мне интересно использовать Doctrine как ORM для нового приложения Zend Framework, которое я пишу. Я пытаюсь понять, как лучше всего интегрировать его как можно более прямолинейно. Каждый пример, который я нахожу, отличается, и многие из них предваряют новые функции автозагрузки в ZF 1.8. Никто из них не работал для меня.

У кого-нибудь есть хороший способ сделать это? Я склонен захотеть поместить его в свой загрузочный файл, но некоторые люди предлагают создать плагин Zend_Application_Resource. Жесткая часть, похоже, правильно загружает пути загрузки как для пространства имен Doctrine, так и для классов моделей, которые по умолчанию не соответствуют соглашению о автоматической загрузке Zend.

Есть предположения? Благодарю.

Я написал Resource Bootstrapper для Doctrine и Zend Framework несколько недель назад и превратил все это в небольшую оболочку, потому что я думаю, что ZF и Doctrine – отличная команда. Вы можете прочитать статью здесь: http://coffeecoders.de/2009/06/using-the-zend-framework-18-bootstrapper-and-doctrine-110/

Он полностью настраивается с помощью конфигураций ресурсов Bootstrap (пример также включен). К сожалению, Doctrine ищет модели в папке модели с тем же именем класса, что и имя файла (что не соответствует схеме именования ZF), поэтому на самом деле невозможно избавиться от регистрации автозагрузчика Doctrine. Ресурс Loader выглядит так:

<?php /** * Doctrine model loading bootstrap resource. Options must provide a connection string. * directory option for model directory is optional (default is ./models). * Further options will be set for the Doctrine manager via setAttribute (eg model_loading). * @author daff */ class Cuckoo_Application_Resource_Model extends Zend_Application_Resource_ResourceAbstract { public function init() { $manager = Doctrine_Manager::getInstance(); $options = $this->getOptions(); foreach($options as $key => $value) { if($key != 'connection' && $key != 'directory') $manager->setAttribute($key, $value); } if(empty($options['connection'])) throw new Exception("No database connection string provided!"); Doctrine_Manager::connection($options['connection']); if(empty($options['directory'])) $dir = './models'; else $dir = $options['directory']; Doctrine::loadModels(realpath($dir)); return $manager; } } 

http://weierophinney.net/matthew/archives/220-Autoloading-Doctrine-and-Doctrine-entities-from-Zend-Framework.html

взгляните на этот пост. Он дает подробное объяснение, структуру каталогов и способы использования функций автозагрузки.

Что касается автозагрузки, вы можете довольно эффективно использовать загрузчик Doctrine с новым стеком Zend_Loader_Autoloader. Взгляните на эту страницу , особенно там, где упоминается метод pushAutoloader ().

Вот основной прогон:

 $autoloader = Zend_Loader_Autoloader->getInstance(); $autoloader->pushAutoloader(array('Doctrine', 'autoload'), 'Doctrine'); 

Это будет использовать собственный автозагрузчик Doctrine только для классов, начинающихся с Doctrine, если они еще не найдены другими автозагрузчиками в стеке.

Надеюсь это немного поможет.