cmsx / fw
dev-master
2014-03-12 20:49 UTC
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-09-14 13:10:51 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 框架中,如果可以获取到任何对象,那么有很大概率会提供自动完成功能,因为我们不使用类似的语言结构
$app['DB']->query()
Doctrine::getTable('JobeetJob')
因为这些结构不允许 IDE 确定使用了哪个对象,从而提供自动完成提示。此外,在需要的地方使用了 PHPDoc 注释 @return
,并且除了非常明显的方法外,每个方法都附有简短注释,这有助于理解其本质,而无需阅读代码。