windstep / common

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Установка

  • В composer.json в require-dev прописываем: "artskills/common": "dev-master",
  • Не забываем указывать там же: "minimum-stability": "dev"
  • Подключаем репозиторий:
{
    "type": "vcs",
    "url": "git://github.com/vovantune/common"
}
  • Запускаем php composer.phar install из папки проекта.
  • В bootstrap.php под строкой require CORE_PATH . 'config' . DS . 'bootstrap.php'; дописываем следующую:
require ROOT . DS . 'vendor' . DS . 'artskills' . DS . 'common' . DS . 'src' . DS . 'config' . DS . 'bootstrap.php';
  • В bootstrap.php правим следующую строку:
Cache::setConfig(\App\Lib\AppCache::getConfig());

Настройка тестового окружения

Копируем файл test-app-conf/app_local.php.dev в test-app-conf/app_local.php.

docker-compose up -d
# подключаемся по ssh к проекту
docker-compose exec -u www-data php bash
# запускаем все тесты
composer check

В подпапке dev хранятся данные MySQL, а также конфигурация Docker виртаулок.

Что тут сделано

Основные фичи

Мелочь

  • Формирование конфига для phinx на основе кейковского конфига подключения
  • В контроллере - методы для стандартных json ответов и стандартная обработка ошибок
  • Правильная обработка вставки NULL значений в поля типа JSON
  • Если нужно выпилить эмодзи при сохранении в базу (16 байтные символы), то подключаем Utf8StringType
  • zip/unzip
  • Очистка папок по времени создания, отложенное создание папки и ещё пара мелочей
  • Незначительные изменения Http/Client
  • Из окружения разработчика все емейлы шлются на тестовый ящик; из юнит-тестов - сохраняются с возможностью достать их и проверить; и ещё пара мелочей
  • Ограничения для миграций - для полей таблиц обязательно указывать комментарии и значения по-умолчанию (либо явно указывать, что по-умолчанию значений нет)
  • Трейты для одиночек и полностью статичных классов-библиотек
  • Функции для удобного формирования в запросах вложенных ассоциаций и полных названий полей
  • Формирование конфига кеша
  • Некоторые удобные функции для работы с массивами и строками
  • Удобные чтение и запись в csv
  • Немного более удобная работа с Connection
  • Определение окружения и автодополнение для чтения из Configure
  • Класс для работы с git и чистка устаревших веток
  • Однострочный вызов http запросов и получение результата в нужном формате
  • Русская граматика: правильное склонение слов с числитильными; даты
  • Транслит
  • Построитель Url. Основная фишка - использование текущего домена по всему коду (у всех разработчиков и на продакшне текущий домен разный)
  • Объект для сообщений между классами да и вообще для любых целей (использование объектов вместо ассоциативных массивов ради автодополнения)
  • Функции для удобного запуска команд в шелле (Удобные возвращаемые значения, ошибки по-умолчанию попадают в вывод, возможность запускать в фоновом режиме, запуск из конкретной папки)
  • Добавлены шаблоны и параметры хелпера Form
  • Запуск функции в несколько потоков MultiThreads

Доработать

  • Описать регламент работы с common (как оформлять доки, как оформлять код)
  • Выпилить использование Git как одиночки и без указания папки (сначала в проектах, потом в common)
  • В деплое сделать функцию возврата к предыдущей версии
    • По большей части всё просто - переключить симлинк на предыдущую папку и очистить кеш
    • Но до этого нужно откатить миграции. Сравнить миграции в текущей папке и в предыдущей, и из текущей откатить разницу
    • И нужно проверять, что в предыдущей папке сейчас более старая версия. (Если сделано более одного отката, то можно сделать круг.) Проверка по currentVersion
  • Об успешном деплое тоже можно сделать оповещение (чтоб не гадать, когда он завершился)
  • Можно в деплое добавить проверку, что сейчас ничего не деплоится/откатывается, чтобы нельзя было запустить одновременно

About


Languages

Language:PHP 99.4%Language:Dockerfile 0.3%Language:Makefile 0.1%Language:JavaScript 0.1%Language:Smarty 0.1%Language:Shell 0.0%