Я бы разделил на library
(ваш рабочий код) и config
(три строки для каждого пользователя, вероятно, соединения с базой данных и т. П.).
Разделите library
на универсальное местоположение, например, /home/library
(в * nix) и разрешите атрибут чтения для других учетных записей пользователей.
Теперь для каждого сайта есть файл config
, который сначала включает library
, а второй устанавливает конфигурацию, специфичную для сайта. Обновление library
обновляет все версии. Тем не менее, предостережение - вы захотите провести некоторые юнит-тесты, чтобы обновление library
не нарушало ни одного из отдельных сайтов.
например, config
: (по одному на сайт)
<?php
require_once('/home/library/include.php');
//Line 1 config
//Line 2 config
//Line 3 config
?>
Если ваша библиотека кода также используется для визуализации содержимого (index.php и т. Д.), У вас есть два варианта: (1) создать symlinks
между веб-папками каждого сайта и источником library
, или (2) разделите ваш код на основные функции и код рендеринга.
Симлинк создает системную ссылку между двумя точками на диске (это как указатель). Правильно созданная ссылка позволяет получить доступ к папке под другим именем, поэтому вы можете создать /home/user1/library
, /home/user2/library
/home/user3/library
, и все они указывают и содержат содержимое /home/library
(они не являются копиями данных ).
Я бы был включен, чтобы пойти с # 2, хотя это потребует больше работы заранее. Ваш library
выполняет свою работу, но рендеринг сайта выполняется вторым фрагментом кода, который предоставляется для каждого сайта (вероятно, включая вышеупомянутый config
), это обеспечивает большую гибкость на сайте за сайтом основа (даже если вы еще не предвидите, что нуждаетесь в этом). В качестве побочного эффекта вы на пути к многоуровневому приложению.