cmsx / fw
CMSx Framework
Requires
- php: >=5.3.0
- cmsx/auth: dev-master
- cmsx/container: dev-master
- cmsx/db: dev-master
- cmsx/form: dev-master
- cmsx/html: dev-master
- cmsx/image: dev-master
- cmsx/kernel: dev-master
- cmsx/navigator: dev-master
- cmsx/page: dev-master
- cmsx/template: dev-master
- cmsx/url: dev-master
- symfony/console: dev-master
This package is not auto-updated.
Last update: 2024-11-09 14:00:49 UTC
README
Идеология
- Полиморфизм. Наследование. Инкапсуляция. Никакой магии.
- Никаких конфигов. Нигде.
- Максимум подсказок в 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
и каждый метод, за исключением совсем очевидных, снабжен кратким комментарием, позволяющим понять суть без изучения кода.