Skip to content

cmsx/FW

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CMSx Framework

Идеология

  1. Полиморфизм. Наследование. Инкапсуляция. Никакой магии.
  2. Никаких конфигов. Нигде.
  3. Максимум подсказок в IDE (PHPStorm).

Пояснения

Всё следует упрощать до тех пор, пока это возможно, но не более того. © Эйнштейн

1. Полиморфизм. Наследование. Инкапсуляция. Никакой магии.

Фреймворк старается быть максимально незаметным. Нет никаких сложных соглашений, не обязательно читать тонны документации. Можно просто взять пример и начать писать проект, при необходимости подключая сторонние компоненты или просто замещая части фреймворка, ведь он полностью состоит из подключаемых независимых компонентов.

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

2. Никаких конфигов. Нигде.

Настройка системы производится с помощью вызовов методов, настраивающих окружение, а конфигурирование форм, схемы БД и т.п. осуществляется с помощью наследования базовых классов и их дополнительной инициализации. Таким образом IDE сама подсказывает доступные опции и шанс опечатки или ошибки довольно невысок. И опять же, не нужно лезть в документацию, чтобы посмотреть какие опции есть по этому пункту.

Пример настройки окружения:

// Настройка подключения к БД. Созданное соединение автоматически сохраняется в "реестр".
X::AddConnection('localhost', 'cmsx', 'qwerty', 'cmsx', 'utf8');

// Прописываем путь к папке с шаблонами
Template::SetPath('/my/path');

Пример настройки формы:

class MyForm extends Form
{
  function init() {
    $this
      ->addInput('name', 'Имя')
      ->setIsRequired(true);
    $this
      ->addSelect('city')
      ->setOptions('Москва', 'Киев', 'Минск')
    $this
      ->addInput('email', 'E-mail')
      ->setRegexp('/[some_regexp]/uis');
  }
}

3. Максимум подсказок в IDE (PHPStorm).

В CMSx Framework если где-либо можно получить объект, по нему с большой вероятностью будет доступен автокомплит, т.к. не используются языковые конструкции вида:

$app['DB']->query()
Doctrine::getTable('JobeetJob')

Т.к они не позволяют IDE определить, какой именно объект используется и соответственно выдать подсказки для автокомплита. Кроме этого, там где необходимо прописаны PHPDoc комментарии @return и каждый метод, за исключением совсем очевидных, снабжен кратким комментарием, позволяющим понять суть без изучения кода.

About

CMSx Framework

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages