codememory/framework

Codememory framework


README

Создание проекта

composer create-project codememory/framework ./

Ссылки на разделы

Структура папок

│ ── .config
│ ── app
│  │ ── Controller
│  │ ── Events
│  │ ── Listeners
│  │ ── Models
│  │ ── Orm
│  │  │ ── Entities
│  │  │ ── Repositories
│  │ ── Software
│  │ ── Validations
│ ── bin
│ ── configs
│ ── kernel
│ ── migrations
│ ── public
│  │ ── Assets
│  │ ── Dist
│ ── resource
│  │ ── Templates
│  │ ── Translations
│ ── routes
│ ── storage

Соглашение об именовании

  • Каждый ключ в конфигурации, должен находится в camelCase;

  • Bind описывающий ключ текущей конфигурации должен начитаться на имя текущей конфигурации и через . имя. Формат {configName}.{bindName} Например:
      caching:
        binds:
          caching.path: "path"            # Внимательность на имя ключа!
          caching.history.path: "path"    # Внимательность на имя ключа!
  • Используйте camelCase для переменных, методов и функций. Например: $variableName, functionName();

  • У каждой константы должен быть определен модификатор доступа;

  • Пространства имен должны соответствовать PSR-4;

  • Файл и класс данного файла должны находится в UpperCamelCase. Например: ProductCreator.php, class ProductCreator;

  • Абстрактный класс должен содержать в себе префикс Abstract;

  • Интерфейс должен заканчиваться на суффикс Interface;

  • Трейт должен заканчиваться на суффикс Trait;

  • Исключение должно заканчиваться на суффикс Exception;

Стиль написания кода

  • После символа { должна быть одна пустая строка;

  • Перед символом } должна быть одна пустая строка;

  • После namespace должна быть одна пустая строка;

  • После последнего use должна быть одна пустая строка;

  • Каждый класс должен содержать в себе теги PHPDoc: class {className}, @package {namespace}, @author {author};

  • Каждый метод, свойство, должны содержать PHPDoc, если метод или свойство переопределены, то в PHPDoc должен быть единственный тэг @inheritDoc за исключением тега @throw;

  • Для любого использующего класса должен быть use;

  • Не используйте двойные кавычки, вместо них воспользуйтесь одинарными за исключением того, если вам нужно использовать управляющие последовательности;

  • Если нужно вызвать переменную внутри строки, воспользуйтесь функцией sprintf;

  • Если вызывается две и более одинаковых функций, то не стоит использовать пустую строку между ними;

  • Если service-provider используется два и более раза, занесите данных сервис-провайдер в переменную;

  • Каждая переменная, функция, метод, должны иметь тип возврата;

  • Используйте круглые скобки при создании экземпляров классов независимо от количества аргументов конструктора;

  • После каждой , должен быть пробел;

  • Так же используйте стили PSR-12, которые не переопределяют Codememory Style Guide;