MyQEE 全新首页上线, V3.0 RC1版本发布

经过1年的大版本调整,全新的V3.0 RC1版本已经发布,并且全新设计更新了官网。

这次更新经历了较漫长的过程,本来是打算发布V2.1版本的,但是在各位热心网友的提议下,直接更新到了3.0版本,并且在系统上相比有了较华丽的升级。

下面介绍下由2.0升级到3.0后带来的变化和优点:相比V2.0中增加了modules和drivers,在核心类库中把类似 DatabaseSessionSession 等大型类库都单独分离模块(即modules),并且目前已把 Database 的各个驱动分离到drivers里。这样做迎合了当前流行的模块化开发的趋势,模块化开发的好处就是可以最大限度的自定义。

更加注重系统安全:在V2的基础上,V3对系统内部调用加强了安全校验规则,并使用动态密码保证系统能够更加安全。增加了对 CSRF 攻击的防范。

另外,MyQEE也开始支持 Compress 包管理器安装和更新了,目前此功能还处于测试阶段,待正式版本发布后,你的程序可以直接用过包管理器进行升级了,再也不用担心自己的系统落后了。

PS: 由于后台类库还在升级中,所以RC1版本里不含目前官网的新版后台演示

以下是V3升级的一些列表

  • 核心部分改动及优化
    • 类库、模块、ORM、控制器等文件名命名实现全统一,全部改为小写方式
    • libraries/myqee/core类库改为根目录core/目录,并取消 $config['libraries']['core'] 的配置项,并增加DIR_CORE 常量,此常量目录为core目录
    • libraries/bootstrap.php 移动到core目录中,并修改index.php中include文件路径
    • 完善 Bootstrap::$base_url 的获取
    • 优化Session的读取,对生成的SessionID增加校验功能,防止伪造
    • 增加500错误数据收集的收集功能,可以关闭(配置中$config['error500']['close'] = true;即可)
    • 增加上传类库,并支持多驱动协议存放
    • Core::set_project($project) 改为 Core::change_project($project)
    • Session类库优化
    • ORM Finder中 get_by_id() 和 get_by_ids() 方法增加第二个参数$use_master指定是否在主库上查询,默认false
    • 特殊控制器目录修改,解决部分主机不支持特殊字符目录的问题
      • 后台控制器  controllers/[admin]/ 目录改为 controllers-admin/
      • 命令行控制器 controllers/[shell]/ 目录改为 controllers-shell/
      • 系统控制器  controllers/[system]/目录改为 controllers-system/
  • 控制器相关优化
    • 类命名优化,取消文件夹下双下划线命名方式,统一改成和class,model等相同的命名规则
    • 修复控制器参数大小BUG
    • 增加RESTFul的支持,RESTFul的控制器存放在 controllers-rest/ 目录,可使用 IS_REST_MODE 进行判断
    • 避免系统基础控制器可直接被访问到
    • 重写 Controller_Shell::getopt() 获取参数的代码,实现等同于系统的getopt()方法的功能
  • 数据库相关优化:
    • 增加慢查询日志功能,可在config.php中设置慢查询 $config['slow_query_mtime'] 参数
    • 各驱动优化,避免在连接数据库失败后将数据库用户名、密码等信息暴露到错误堆叠里
    • MongoDB优化主从模式查询,改Group查询为aggregate查询(MongoDB必需2.2版本以上,MongoDB扩展必需1.3+版本)
    • 查询where支持!=和<>,例如:$db->where('id!=', 3) 或 $db->where('id<>', 3); 表示查询条件为id不等于3
    • MySQL驱动支持distinct某个字段,例如 $db->distinct('test_field')
    • Database增加select_max()select_min()select_avg()select_sum() 等高级查询函数
    • 增加 set_builder($builder) 和 recovery_last_builder() 方法,适用与在多条查询中具有类似条件的情况
    • reset()方法支持重置单个信息,比如 $db->reset('select'); 可单独重置select的参数
    • 程序里支持$db = new Database('mysqli://root:123456@127.0.0.1/myqee/')这样的快速连接写法,省去数据库配置的麻烦
  • 代码开发相关优化
    • 将shell目录改名bin目录,增加 merge-assetsview-error500-log 等开发及部署工具
    • 优化Debug功能,支持Chrome浏览器下FirePHP功能
    • statics 控制器改为 assets/devmode/ 控制器,支持开发版本实时优化处理输出css(包括less)和js
  • Administration类库
    • 后台类库使用全新界面,视图使用bootstrap界面框架 详见 http://getbootstrap.com/
    • CSS采用less方式定义,方便修改
    • JS改为模块化,更方便二次开发
    • 支持手机版本
  • 其它
    • 语言包完善
    • 各种细节优化