Q框架

Shorter Than SQL
https://github.com/iamfat/qf

概述 Overview

Q框架简介

Q框架简述
  • Q框架是一个非常优秀的PHP开发框架;
  • Q框架提供了丰富的类库、助手函数和常规的JavaScript操作;
  • Q框架提供了简单易懂API接口可供使用.
  • Write Less, Do More!
Q框架模型设计
  • Q框架使用了MVC的设计模式;
  • Q框架引入了Schema的概念;
  • Q框架应用逻辑层和表现层更好的分离.
Q框架基于PHP5运行
  • Q框架包含了PHP5魔术方法和魔术常量;
  • Q框架包含了抽象类,接口等很多高级特性;
  • Q框架在运行效率方面有着更好的性能.
Q框架是单一入口
  • 单一入口通常是指一个项目或者应用具有一个统一(但并不一定是唯一)的入口文件,也就是说项目的所有功能操作都是通过这个入口文件进行的,并且往往入口文件是第一步被执行的。
  • 单一入口的好处是项目整体比较规范,因为同一个入口,往往其不同操作之间具有相同的规则。另外一个方面就是单一入口带来的好处是控制较为灵活,因为拦截方便了,类似如一些权限控制、用户登录方面的判断和操作可以统一处理了。
  • 单一入口带来的最明显问题可能就是程序配置文件重复加载;鉴于此,目前Q框架采用redis、memcached等各类缓存技术来进行控制文件单次加载,重复利用,大大减少了程序在资源上的浪费。
Q框架的特色
  • Q语句操作数据库:Shorter Than SQL;
  • Q语句类似CSS selector, 对数据库进行模拟html查询方式, 使数据对象的查询更直观;
  • Q语句是对关系型数据进行查询的最快捷书写语法语言.

Q框架加载

Q框架的WEB模式是单入口的,首先执行的文件为public/index.php. 任何一个访问都会经过下列流程。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
try {
Core::setup(); // 内核启动
Core::bind_events(); // 绑定内核事件
Event::trigger('system.setup'); // 系统初始化事件
Event::trigger('system.ready'); // 系统就绪事件
Core::dispatch(); // 分派控制器
}
catch(Exit_Exception $e) { // 正常退出
}
catch(Error_Exception $e) { // 出错退出 记录错误日志
Log::add($e->getMessage(), 'error');
}

Event::trigger('system.output'); // 系统显示事件
Event::trigger('system.shutdown'); // 系统关闭事件
Core::shutdown(); // 内核关闭

开发人员可以同过对system.setup, system.ready, system.display, system.shutdown的事件绑定来在不同阶段加载自己的模块

CLI模式下, 用户通过自行定义ROOT_PATH定位Q框架位置, 并加载core/cli.php用于在CLI环境下使用Q的相关模块

1
2
define(ROOT_PATH, "/var/www/q");
require(ROOT_PATH.'core/cli.php');

在CLI模式下, 启动流程与WEB流程一致 但是关闭时需要根据需要调用CLI::shutdown()来正常关闭框架

1
2
3
4
5
6
define(ROOT_PATH, "/var/www/q");
require(ROOT_PATH.'core/cli.php');

// do something

CLI::shutdown();

常规 General

目录加载

URL地址

Q控制器

数据模型

数据视图

常用工具

核心库 Core Libraries

Q选择器

Database 数据库

Email 邮件

Controller 控制器

View 视图

I18N 多语言

Event 事件

Auth 验证

Properties 扩展属性

Cipher 加密辅助类

Input 输入辅助类

Form 表单辅助类

Config 配置文件辅助类

Date 时间辅助类

CSS 辅助类

CURL 下载辅助类

File 文件辅助类

JavaScript 辅助类

Log 日志辅助类

Misc 辅助类

Output 输出辅助类

Session 会话辅助类

URI 路径辅助类

其他库 Misc Libraries

Image 图像处理

HTTP

Widget 装饰件

Models

ORM_Model 数据模型

Javascript

AJAX框架