2014-10-29 5 views
1

Я управляю общедоступным PHP-приложением, которое мы настроили самостоятельно. Он может использовать много плагинов/etc, которые написаны другими людьми. Все они получают обновления.PHP - Как написать патчер кода для PHP-приложения в PHP?

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

+0

* «Возможно ли это?» * - Возможно, да. Это лучший способ пойти? Возможно нет. Я бы посмотрел, что VCS делают для облегчения автоматического слияния; а затем понять, что автоматическое слияние на 100% практически невозможно, и человеку всегда придется смотреть на результат. – deceze

+1

Рассмотрите возможность использования модулей в виде разделенных пакетов и разрешите их переопределять методы. – michaelbn

ответ

2

Есть несколько альтернативных способов для достижения этой цели:

  • Традиционными: Вы можете использовать GNU diff/patch утилиты для создания патча-файла с различиями между настраиваемой версией и версией ванильной, установите обновления, а затем применить патч к обновленному.

  • Inheritance: Предполагая, что приложение использует парадигму ООП, вместо того, чтобы модифицировать основные классы приложений, вы можете расширить классы своим собственным, таким образом, ваши настройки могут быть отделены от основных файлов, поэтому, когда вы обновляете приложение, ядро ​​будет обновляться, и ваши настройки остались нетронутым

  • Caching: Вы могли бы реализовать функциональность, аналогичную vQmod OpenCart, которая сливает свои настройки в ядре программного обеспечение путем создания динамически объединены версии как кэшированные .php файлов, которые бежали вместо исходные основные, таким образом, вы можете запускать измененное ядро ​​без изменения оригинала.

+0

Принимая это как ответ. Основываясь на этих трех ответах и ​​многого другого, которые мы получили из других источников, мы решили внедрить diff/patching на основе Source Control. Это не 100% автоматический, да (это идеальный вариант), но он позволяет нам делать это намного дешевле, чем делать это полностью вручную. –

Смежные вопросы