Работа с Zend Tool в средах с несколькими разработчиками
В любом проекте Zend Framework я могу работать в 2 или 3 местах - на моем рабочем ПК, домашнем ПК или моем MacBook. Мой исходный код всегда находится в SVN, и я обычно работаю на сервере разработки, прежде чем отправлять выполненную работу на рабочий сервер. В такой среде я никогда не был слишком уверен, где именно мне следует работать с Zend_Tool.
Как я вижу, есть 2 варианта:
- Настройте для локальной работы с Zend_Tool в каждой среде разработки, а затем отправьте на сервер dev оттуда, проверяя манифест и т. Д. При каждом использовании Zend_Tool.
- Используйте Zend_Tool непосредственно на сервере разработчика, а затем загрузите каждое добавление / изменение, чтобы затем вставить его в SVN.
Я был бы склонен сказать, что самым надежным способом была бы множественная установка Zend_Tool, но мне было бы интересно узнать, могут ли люди подумать о возможных проблемах с этим или о причинах, по которым я должен сделать другой выбор.
Благодарю.
3 ответа
Zend_Tool фактически предназначен для использования в средах разработки. Вы чувствуете, что используете его в нескольких местах, совершенно правильно, на самом деле единственная проблема - это синхронизация между XML-файлами, которые Zend_Tool использует, чтобы узнать другую конфигурацию проекта, и все же это произойдет, только если основные изменения будут внесены во время одной и той же ревизии. на разных рабочих копиях (общее ограничение управления версиями / проблема / что угодно).
Кроме этого, у вас не должно быть никаких проблем.
Zend_Tool жестко кодирует APPLICATION_ENV
для "развития" в файле Tool/Project/Context/Zf/BootstrapFile.php
Вы можете получить все безрассудно и изменить исходный код (не очень хорошая идея, но это будет работать). Применение этого патча позволит вам использовать переменную окружения оболочки, чтобы сообщить Zend_Tool, в какой среде вы находитесь.
--- BootstrapFile.php (saved version)
+++ (current document)
@@ -106,9 +106,11 @@
define('APPLICATION_PATH', $this->_applicationDirectory->getPath());
$applicationOptions = array();
$applicationOptions['config'] = $this->_applicationConfigFile->getPath();
+
+ $env = getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development';
$this->_applicationInstance = new Zend_Application(
- 'development',
+ $env,
$applicationOptions
);
}
,
Просто не забудьте установить APPLICATION_ENV
переменная окружения.
Излишне говорить, что это довольно опасно и может взорваться, если у вас неправильный набор переменных окружения, но для тех из нас, кто использует ZFDoctrine, который интегрирует команды Doctrine в Zend Tool, у нас не так много других вариантов, когда речь идет о Доктрина миграции.
Смотрите эту ссылку http://framework.zend.com/issues/browse/ZF-9898?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel
Что мы делаем здесь, на моей работе, это создание конфигурации экземпляра. Делая это, мы получаем 3 конфига в зависимости от среды, в которой выполняется приложение.
- Локальный компьютер (отладка во время программирования).
- Разработка (используется для тестирования нашего кода перед отправкой в производство).
- Производство (Живая среда).
Затем мы настраиваем класс config для загрузки конфигурации, которая содержит пути и данные для наших инструментов в зависимости от среды, которую мы указываем в нашем файле конфигурации.
По сути, у нас есть файл с именем Chooser.txt, в котором будет указано имя файла конфигурации для запуска среды. Когда мы хотим запустить его локально, мы редактируем файл Chooser.txt в local_config.txt (мы используем.txt, чтобы мы могли проверить определенные конфигурации и затем.htaccess каталог config, чтобы никто не мог его просмотреть). Когда мы нажимаем на сервер разработки, мы редактируем Chooser.txt, чтобы сказать dev_config.txt и так далее. Затем в dev_config.txt или local_config.txt у нас будут переменные конфигурации для инструментов, настройки php и т. Д.
Теперь, с учетом сказанного, мы устанавливаем инструмент в каждой среде, чтобы наши инструменты и библиотеки были доступны в нашей локальной среде, разработке и производстве. Наличие наших инструментов в локализованной среде значительно упрощает тестирование при обновлении / исправлении инструментов, так что вы не просто исправляете инструменты на рабочем сервере, когда вам нужно сначала протестировать их на сервере разработки.