Я не использую 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>
Конечно, это не совсем полная интеграция, насколько я имею в виду ... но этого должно быть достаточно, чтобы вы начали и работалибез особых хлопот.Если это стоит вложений для вас в этом проекте, я бы пошел вперед и создать ресурс приложения.Запустите сборку 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, а мне потребовалось пару недель, чтобы проработать все изгибы: -)