cmsx/fw

CMSx 框架

dev-master 2014-03-12 20:49 UTC

This package is not auto-updated.

Last update: 2024-09-14 13:10:51 UTC


README

理念

  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 框架中,如果可以获取到任何对象,那么有很大概率会提供自动完成功能,因为我们不使用类似的语言结构

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

因为这些结构不允许 IDE 确定使用了哪个对象,从而提供自动完成提示。此外,在需要的地方使用了 PHPDoc 注释 @return,并且除了非常明显的方法外,每个方法都附有简短注释,这有助于理解其本质,而无需阅读代码。