qcubed/qcubed

QCubed 是一个用于快速网页开发的 PHP 框架。基于 jQuery,以面向对象为核心,QCubed 为构建数据库驱动的 Web 2.0 应用程序提供了强大的解决方案。

安装次数: 1,156

依赖项: 1

建议者: 0

安全性: 3

星星: 57

关注者: 23

分支: 47

公开问题: 60

类型:qcubed-framework

v3.1.1 2017-07-08 05:43 UTC

README

Build Status Test Coverage Issue Count

版本

**最新稳定版本:[版本 3.1.0,发布于 2017 年 7 月 6 日]。

版本 2 的最新稳定版本可以在 v2 分支中找到。

社区

加入我们 Slack qcubed.slack.com。获取邀请 这里.

什么是 QCubed?

QCubed (发音为 'Q' - 立方) 是一个支持 PHP5 (5.4 及以上) 和 PHP7 的 PHP 模型-视图-控制器快速应用程序开发框架。框架的目标是节省开发者在平凡、重复性任务上的时间 - 让你可以专注于有用且有趣的事情。QCubed 在你需要快速将大型数据库结构提供给用户的情况下表现尤为出色。

有状态架构

使用 QCubed,你无需处理来自浏览器的 POST 和 GET。QCubed 会自动为你处理这些,并将信息打包成面向对象表单和控制。使用 QCubed 编程的感觉就像在编写桌面应用程序。如果你熟悉 ASP,那么感觉类似。

代码生成器

代码生成器会根据你的数据库模式自动创建匹配的表单和控制对象类。它使用 ORM(对象-关系映射)的概念,为你实际创建整个模型层。

Codegen 可以利用外键关系和字段约束来生成包含验证例程和强大的 CRUD 方法的可立即使用的数据模型,让你能够操作对象而不是不断发出 SQL 查询。

更多信息和示例请访问在线 https://qcubed.eu/

面向对象查询

使用 QQueries 允许简单而强大地加载模型,所有生成的 ORM 类都有查询方法和 QQNodes。通过使用这些方法,获取复杂数据子集变得非常简单 - 并且可以用于几乎任何关系数据库。

用户界面库

QCubed 使用 QForm 的概念在 POST 事务之间保持表单状态。QForm 作为控制器,可以包含 QControls,即 UI 组件。

所有 QControls(包括 QForm 本身)都可以使用模板,这是视图层,完成 MVC 结构。

QControls 可以利用 QForm 的 FormState,通过 Ajax 回调轻松更新自身,就像同步服务器 POST 一样。所有 jQuery UI 核心小部件都可用作 QControls。

一些 QControls 包括

  • QDialog
  • QTextBox
  • QListBox
  • QTabs
  • QAccordion

了解 QCubed 的最简单方法是查看 http://qcu.be/examples/ 中的示例教程

插件

通过其插件系统,QCubed 使打包和交付核心代码库的增强和补充变得简单。QCubed 当前活跃版本的插件位于以 plugin 开头的存储库中。

系统要求

  • 一款开发计算机,您可以设置它,以便浏览器可以写入您的文件系统中的目录。
  • v3.0.x版本,需要PHP 5.4及以上版本。PHP 7和HHVM也得到支持。
  • 所有HTML代码均符合HTML5规范。
  • QCubed依赖于jQuery来处理一些Ajax交互。此外,许多超出基本HTML控制器的内置控件需要JQuery UI。
  • 一个SQL数据库引擎。包括MySQL、SqlServer、Postgres、Oracle、PDO、SqlLite、Informix适配器。如果您有其他SQL,创建另一个适配器并不困难。

安装

安装过程在此详细描述:[安装说明](https://github.com/qcubed/qcubed/blob/master/INSTALL.md)。

升级

2.x -> 3.0

3.0相对于2.x进行了重大架构变更。您应该从头开始创建一个新项目,生成您的模型,使用ModelConnectorEditor来细化在连接器(以前称为MetaControls)中生成的代码,然后将旧版本中的代码复制到新版本中。您会发现许多以前需要手动做的事情现在都已通过生成的代码完成,因此可能不会像您想象的那么耗时。让我们跳起来吧 :-)

3.0 -> 3.1

v3.1现在在模型中实现了更改跟踪。每次保存对象时,它不是将整个对象推送到数据库,而是只推送已更改的数据。为此,它将生成的模型超类中的成员变量从受保护改为私有,这可能会导致您需要更改模型子类的代码。为了帮助过渡,新的私有变量功能默认关闭。您需要通过编辑codegen_settings.xml文件并在createOptions标签中添加'privateColumnVars="true"'参数来将其打开。有关示例,请参阅qcubed/install/project/configuration目录中的codegen_settings.xml文件。

这将使所有在Gen类中的受保护列变量变为私有,因此您无法直接从Model子类访问它们。例如,如果您有一个表中的"Name"列,您可以这样做

$strName = $this->Name;

或者更好

$strName = $this->getName();

但不能这样做

$strName = $this->strName;

$this->Name 转换为 $this->getName()

此外,而不是这样做

$this->strName = $strName;

这样做

$this->setName($strName);

或者

$this->Name = $strName;

新功能的好处包括更好的性能、减少OptimisticLocking异常,并防止您意外访问由于QSelect子句而没有加载的值。此外,QSelect现在还可以用于控制将对象转换为其他格式(如JSON)时生成的代码。

3.1 -> 4.0

v4.0是另一次重大架构变更,旨在支持PSR-1、PSR-2和PSR-4标准。v4为所有核心和库文件添加了命名空间。所有核心类前面的'Q'字母都不再存在,因为那是在命名空间在PHP中可用之前我们实现命名空间的方式。

它包括帮助自动化将您的代码从v3.x代码转换为v4.0的工具。有关更多信息,请参阅qcubed/application存储库中的Readme文件。

最新提交

最新更改的列表可在[https://github.com/qcubed/qcubed/commits/master](https://github.com/qcubed/qcubed/commits/master)查看。

致谢

QCubed是从Michael Ho的项目QCodo分支出来的。QCubed依赖于jQuery,并使用jQuery UI库来处理一些核心控件。