Консультации по разделению заявки

В настоящее время у меня есть веб-приложение с 3 интерфейсами (в зависимости от того, на какой URL вы переходите), которое разделяет очень мало кода между 3 интерфейсами. Моя структура каталогов выглядит так:

\app1
    \includes
    \html
\app2
    \includes
    \html
\app3
    \includes
    \html
\crons
\libs
\logs
\setup
    \db
\shared
    \globalFunctions
    \oldAPI
    \oldClasses

Папки приложений представляют собой отдельные интерфейсы со своими собственными включениями и корневыми документами в HTML-коде. Crons предназначен только для работы с интерфейсом командной строки, библиотеки - это более новые библиотеки PHP5, такие как новый код, который мы пишем, и такие вещи, как Zend Framework. Журналы - это журналы приложений, настройка - это информация о настройке для развертывания, а общая - это старая кодовая база PHP4, на которую все еще полагается часть кода. Все хранится в одном большом репозитории SVN.

Что было бы разумным способом разбить это, чтобы я мог превратить этот большой проект SVN в более мелкие, чтобы упростить ветвление и слияние? В любом случае большинство проектов сосредоточено на одном приложении, поэтому редко приходится обновлять код в нескольких местах.

Или лучше сохранить эту текущую структуру и просто продолжать портировать код PHP4 в OO PHP5 и, естественно, отказаться от этого?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
179
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Проверка на практике

Вы должны спросить себя, какую ценность я получу при разделении этого приложения и во сколько это мне будет стоить. Затем, если вы все еще хотите это сделать, подумайте о том, что разбиение большого приложения на более мелкие - это особенность и как добавление ненужных функций хуже, чем отсутствие необходимых функций. Это подпадает под разработку программного обеспечения ТОЩИЙ.

Разделение вашего приложения на несколько приложений

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

\app1
    \docs
    \includes
    \html
    \logs
    \setup
        \deploy
        \db
\app2
    \docs
    \includes
    \html
    \logs
    \setup
        \deploy
        \db
\app3
    \docs
    \includes
    \html
    \logs
    \setup
        \deploy
        \db
\crons
\deploy
    \docs
    \apps123
\libs
    \newSharedLibName
        \docs
        \globalFunctions
        \oldAPI
        \oldClasses
    \zend
    \etc ...

Я оставил cron в покое, так как не уверен, что вы с ним делаете.

p.s. Разделить приложение на более мелкие части всегда сложнее, чем вы думаете.

Вы можете разделить его на четыре проекта SVN - по одному для каждого из трех приложений, а четвертый - для остальной части кода. Затем вы можете определить этот общий код как внешний для каждого из отдельных приложений, чтобы они могли работать как автономная проверка.

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

Это, вероятно, больше хлопот, чем стоит, но все зависит от того, как вы работаете.

Я согласен, использование svn: externals для внутренних - хороший вариант.

Bob Fanger 18.10.2008 03:05

Другие вопросы по теме