Мы используем файлы cookie для улучшения работы сайта. Вы можете принять все cookies или настроить предпочтения. Подробнее в нашей Политике использования cookie-файлов.
Политика обновлений
Обзор
Wepps использует многоуровневую архитектуру с четким разделением между ядром платформы и пользовательским кодом. Это обеспечивает безопасные обновления без риска потери ваших наработок.
Компоненты платформы
🔵 Ядро платформы (обновляется)
Эти компоненты обновляются автоматически через систему обновлений:
| Компонент | Путь | Назначение |
|---|---|---|
| Core | packages/WeppsCore/ |
Базовые классы: Extension, Navigator, Data, Users и др. |
| Admin | packages/WeppsAdmin/ |
Административная панель |
| Template | packages/WeppsExtensions/Template/ |
Система шаблонов для статических страниц |
| Системные аддоны | packages/WeppsExtensions/Addons/* |
Вспомогательные модули (выборочно) |
Что включают обновления:
- ✅ Исправления безопасности
- ✅ Новая функциональность
- ✅ Улучшения производительности
- ✅ Исправления багов
- ✅ Обратная совместимость в рамках мажорной версии
🟡 Демонстрационные расширения (НЕ обновляются)
При установке платформы включен демонстрационный интернет-магазин с примерами:
Расширения:
Products- каталог товаровCart- корзина покупокNews- новости и блогGallery- фотогалереяProfile- личный кабинетContacts- контактная формаBrands- брендыServices- услугиSlides- слайдер- И другие расширения
⚠️ Важно понимать:
- Эти расширения служат демонстрационными примерами с готовой реализацией
- Полностью рабочие и готовы к использованию
- Не обновляются через систему обновлений
- Предназначены для быстрого старта, изучения и адаптации под ваш проект
- Подразумевается, что разработчик будет модифицировать их в соответствии с бизнес-логикой своего проекта
Демонстрационные таблицы БД:
Products,News,Gallery,Brandsи др.- Также не обновляются и могут быть изменены
🟢 Пользовательский код (ваши разработки)
Код, который вы создаете или модифицируете:
- Ваши расширения в
WeppsExtensions/ - Модифицированные демо-расширения
- Кастомные аддоны в
WeppsExtensions/Addons/ - Шаблоны дизайна (
.tpl,.css,.js) - Контентные данные в БД
Гарантии:
- ❌ Никогда не затрагиваются обновлениями
- ✅ Полный контроль над кодом
- ✅ Рекомендуется использовать Git для версионирования
Система защиты от перезаписи
Проверка изменений
Перед каждым обновлением апдейтер автоматически проверяет:
- Файлы ядра - были ли изменены файлы, подлежащие обновлению
- Таблицы БД - были ли изменены системные таблицы
Что происходит при обнаружении изменений
Если вы модифицировали файлы или таблицы, которые должны обновиться:
⚠️ ПРЕДУПРЕЖДЕНИЕ: Обнаружены изменения в файлах ядра
Следующие файлы были изменены и НЕ БУДУТ обновлены:
- packages/WeppsCore/Extension.php
- packages/WeppsAdmin/Lists/Request.php
Следующие таблицы были изменены и НЕ БУДУТ обновлены:
- s_Navigator (изменена структура)
- s_Users (добавлены поля)
Обновление продолжится, но эти компоненты останутся в текущей версии.
Лог обновлений
Вся информация о процессе обновления сохраняется:
Доступ к логам:
# Просмотр последнего обновления
php packages/WeppsAdmin/Updates/Request.php log
# Полная история обновлений
php packages/WeppsAdmin/Updates/Request.php history
Лог включает:
- ✅ Успешно обновленные файлы
- ❌ Пропущенные файлы (с причиной)
- 🔄 Выполненные миграции БД
- ⚠️ Предупреждения и рекомендации
Жизненный цикл проекта
Этап 1: Установка
php install.php
Устанавливается:
- ✅ Ядро платформы (WeppsCore, WeppsAdmin)
- ✅ Демо-расширения (примеры для старта)
- ✅ Тестовые данные в БД
Этап 2: Разработка
Вы адаптируете платформу под свой проект:
WeppsExtensions/
├── Products/ ← Модифицируете под свои нужды
├── Cart/ ← Настраиваете процесс заказа
├── News/ ← Удаляете, если не нужно
├── MyCustomShop/ ← Создаете новые расширения
└── Addons/
├── PaymentGateway/ ← Свои аддоны
└── CustomFeature/
Рекомендации:
- Используйте Git для контроля версий
- Документируйте изменения
- Избегайте модификации файлов ядра (используйте наследование)
Этап 3: Обновление платформы
# Проверка доступных обновлений
php packages/WeppsAdmin/Updates/Request.php list
# Обновление до конкретной версии
php packages/WeppsAdmin/Updates/Request.php update v1.6.0
Что происходит:
- Апдейтер проверяет изменения в файлах
- Показывает список изменений
- Запрашивает подтверждение
- Обновляет только ядро:
- ✅
WeppsCore/- новые методы, исправления - ✅
WeppsAdmin/- улучшения интерфейса - ❌
Products,Cartи др. - не изменяются - ❌ Ваш код - остается нетронутым
- ✅
- Выполняет миграции БД (при необходимости)
- Сохраняет лог обновления
Рекомендации для разработчиков
✅ Правильный подход
1. Создавайте свои расширения:
// WeppsExtensions/MyShop/MyShop.php
namespace WeppsExtensions\MyShop;
use WeppsCore\Extension;
class MyShop extends Extension {
public function request() {
// Ваша логика
}
}
2. Модифицируйте демо-расширения:
// WeppsExtensions/Products/Products.php
// Это уже не демо, а ваша рабочая версия
// Обновления не затронут этот файл
3. Расширяйте классы ядра через наследование:
// WeppsExtensions/Addons/CustomExtension.php
namespace WeppsExtensions\Addons;
use WeppsCore\Extension as BaseExtension;
class CustomExtension extends BaseExtension {
// Переопределяете нужные методы
public function request() {
// Вызываете родительский метод
parent::request();
// Добавляете свою логику
}
}
4. Используйте hooks и события (если доступно):
// Подписка на события вместо изменения ядра
Hooks::add('after_product_save', function($product) {
// Ваша логика
});
❌ Неправильный подход
1. НЕ модифицируйте файлы ядра:
// ❌ packages/WeppsCore/Extension.php
// Изменения затрутся при обновлении (если не обнаружены апдейтером)
// Или заблокируют обновление этого файла
2. НЕ изменяйте системные таблицы напрямую:
-- ❌ ALTER TABLE s_Navigator ADD COLUMN MyField VARCHAR(255)
-- Может конфликтовать с обновлениями
-- Используйте отдельные таблицы или JSON-поля
3. НЕ полагайтесь на internal API:
// ❌ Использование недокументированных методов
$navigator->_internalMethod();
// ✅ Используйте публичные методы
$navigator->getPath();
Работа с изменениями ядра
Если необходимо изменить файл ядра:
Вариант 1: Wrapper класс
// WeppsExtensions/Addons/MyCore.php
namespace WeppsExtensions\Addons;
use WeppsCore\Data;
class MyData extends Data {
// Переопределяете нужное поведение
public function getList($params = []) {
// Ваша логика до
$result = parent::getList($params);
// Ваша логика после
return $result;
}
}
Вариант 2: Composer autoload
// composer.json
{
"autoload": {
"psr-4": {
"MyApp\\": "WeppsExtensions/Addons/MyApp/"
}
}
}
Вариант 3: Форк и pull request
- Создайте форк Wepps на GitHub
- Внесите изменения в ядро
- Отправьте pull request
- После принятия изменения войдут в официальное обновление
Миграция при breaking changes
Если новая версия изменяет API:
До обновления
# Проверьте доступные обновления и их описание
php packages/WeppsAdmin/Updates/Request.php list
Типичные breaking changes
Пример 1: Изменение сигнатуры метода
// v1.x
$data->getList(['where' => ['Id' => 1]]);
// v2.x (добавлен обязательный параметр)
$data->getList('Products', ['where' => ['Id' => 1]]);
Как мигрировать:
- Найдите все использования старого метода
- Обновите вызовы согласно новой сигнатуре
- Тестируйте на dev/staging окружении
Пример 2: Переименование класса
// v1.x
use WeppsCore\Utils;
// v2.x
use WeppsCore\Helpers\Utils;
Как мигрировать:
- Замените namespace во всех файлах
- Проверьте с помощью IDE (Find Usages)
После обновления
# 1. Проверьте лог обновления
php packages/WeppsAdmin/Updates/Request.php log
# 2. Тестируйте основные функции
# - Главная страница
# - Админка
# - Ваши кастомные расширения
# 3. Проверьте логи ошибок
tail -f /path/to/php-error.log
Что делать с демо-расширениями
Стратегия 1: Использовать как основу
Модифицируйте демо под свой проект:
# Products, Cart, News остаются в WeppsExtensions/
# Вы изменяете их код, добавляете функции
# Они становятся частью вашего проекта
Плюсы:
- Быстрый старт
- Готовая структура
- Понятные примеры
Минусы:
- Нет обновлений (но вы и так их модифицируете)
- Нужно поддерживать совместимость с новым ядром
Стратегия 2: Удалить ненужное
Если делаете не интернет-магазин или не нужны другие разделы из установочного набора:
# 1. Удалите разделы из Навигатора (через админку)
# Навигатор → выберите раздел → Удалить
# При удалении раздела автоматически удаляются все его подразделы
# 2. Физически удалите папки расширений
rm -rf packages/WeppsExtensions/Products
rm -rf packages/WeppsExtensions/Cart
rm -rf packages/WeppsExtensions/Brands
# 3. Удалите расширения из БД (через админку)
# Списки → s_Extensions → удалить Products, Cart, Brands
# 4. Удалите таблицы БД через админку (рекомендуется)
# Списки → выберите таблицу → Удалить
# Это также удалит связанные записи из s_Config и s_ConfigFields
# Или через SQL (не рекомендуется, требует ручной очистки):
# DROP TABLE Products;
# DELETE FROM s_Config WHERE TableName = 'Products';
# DELETE FROM s_ConfigFields WHERE TableName = 'Products';
Стратегия 3: Создать с нуля
Игнорируйте демо, создайте свою архитектуру:
# Оставьте демо для справки
# Создайте свои расширения
WeppsExtensions/Addons/MyCatalog/
WeppsExtensions/Addons/MyCart/
WeppsExtensions/Addons/MyBlog/
Плюсы:
- Полный контроль
- Чистая кодовая база
- Оптимизация под задачу
Минусы:
- Больше времени на разработку
- Нужно изучать архитектуру
Резервное копирование
Встроенные инструменты
Платформа предоставляет системное расширение для создания резервных копий:
Через административную панель:
- Резервирование базы данных - создание дампов БД
- Резервирование файлов - архивирование файлов проекта
Доступ: Административная панель → Системные расширения → Backup
Перед обновлением
Автоматический бэкап:
# Система автоматически создаст бэкап перед обновлением
# Файлы: packages/WeppsAdmin/Updates/backups/
# БД: (опционально, настраивается)
Ручной бэкап:
# 1. Бэкап файлов
tar -czf wepps-backup-$(date +%Y%m%d).tar.gz \
packages/ \
files/ \
pic/ \
config.php
# 2. Бэкап БД
mysqldump --defaults-extra-file=/path/to/config.cnf your_database_name > wepps-backup-$(date +%Y%m%d).sql
# Или с указанием пользователя:
# mysqldump -u user -p your_database_name > wepps-backup-$(date +%Y%m%d).sql
# 3. Сохраните в безопасное место
Откат обновления
Если что-то пошло не так:
# Ручной откат через архивы
# Система автоматически создала архив перезаписанных файлов:
# packages/WeppsAdmin/Updates/files/updates/[tag]/wepps.platform-rollback.zip
# 1. Восстановите файлы из rollback-архива
cd packages/WeppsAdmin/Updates/files/updates/[tag]
unzip -o wepps.platform-rollback.zip -d /var/www/your-project
# 2. Восстановите БД из резервной копии
mysql --defaults-extra-file=/path/to/config.cnf your_database_name < wepps-backup-20251211.sql
# Или с указанием пользователя:
# mysql -u user -p your_database_name < wepps-backup-20251211.sql
Тестирование обновлений
Staging окружение
Создайте копию проекта:
# 1. Клонируйте файлы
cp -R /var/www/your-project /var/www/staging
# 2. Клонируйте БД
mysqldump --defaults-extra-file=/path/to/config.cnf your_database_name | mysql --defaults-extra-file=/path/to/config.cnf wepps_staging
# 3. Обновите config.php
# Измените название БД на wepps_staging
# 4. Тестируйте обновление на staging
cd /var/www/staging
php packages/WeppsAdmin/Updates/Request.php update v1.6.0
# 5. Проверьте работоспособность
# 6. Только после успеха - обновляйте production
FAQ
Q: Потеряю ли я свой код при обновлении?
A: Нет. Обновляется только ядро (WeppsCore, WeppsAdmin). Ваши расширения и модификации демо-расширений не затрагиваются.
Q: Что если я изменил файлы ядра?
A: Апдейтер обнаружит изменения и не перезапишет эти файлы. Вы получите предупреждение и информацию в логе.
Q: Можно ли обновить демо-расширения (Products, Cart)?
A: Они не обновляются автоматически. Если нужна новая версия - скачайте свежий релиз платформы и сравните код вручную.
Q: Нужно ли обновлять платформу?
A: Рекомендуется для получения исправлений безопасности и новых возможностей. Но это не обязательно, если текущая версия вас устраивает.
Q: Как узнать, что изменилось в обновлении?
A: Просмотрите список доступных обновлений:
php packages/WeppsAdmin/Updates/Request.php list
Q: Можно ли пропустить версию?
A: Да, можно обновиться с v1.4.0 сразу на v1.6.0. Система применит все промежуточные миграции.
Q: Как откатить обновление?
A: Используйте автоматически созданный rollback-архив:
# Файлы сохранены в:
# packages/WeppsAdmin/Updates/files/updates/[tag]/wepps.platform-rollback.zip
cd packages/WeppsAdmin/Updates/files/updates/[tag]
unzip -o wepps.platform-rollback.zip -d /var/www/your-project
Также восстановите БД из резервной копии.
Q: Обновления платные?
A: Нет, все обновления бесплатны (для открытой версии платформы).
Q: Как часто выходят обновления?
A: В среднем 1-2 минорных обновления в квартал + hotfix при критических багах.
Q: Что такое мажорная версия?
A: Версии формата v1.x.x → v2.x.x. Могут содержать breaking changes. Обновление требует внимания и тестирования.
Q: Обязательно ли использовать систему обновлений?
A: Нет, можно обновлять вручную (git pull, rsync и т.д.). Но система обновлений удобнее и безопаснее.
Рекомендация: Используйте последнюю стабильную версию платформы.