QeePHP
百度百科:
https://baike.baidu.com/item/qeephp/8328612?fr=aladdin
官方地址:
http://www.qeephp.cn/app/index.php
下载地址:
https://github.com/firzen/QeePHP
文档
- 快速入门:http://qeephp.cn/docs/qeephp-quickstart/
- 权威开发指南:http://qeephp.cn/docs/qeephp-manual/
- API参考手册:http://qeephp.cn/docs/api/
MVC 工作流程
QeePHP 可以工作在命令行、Web 服务器等各种环境中。在 Web 服务器中,QeePHP 可以选择 MVC 组件来实现全功能的应用程序。
MVC 实际上是一系列略有不同的模式。QeePHP 采用的是Passive(被动)MVC 模式 。在 Passive MVC 模式中,Model(模型)完全不知道自己身处于 MVC 结构之中。换句话说,模型与 MVC 模式里面的其他组成部分完全没有关联,因此模型可以被用在各种场合,而不仅仅限于 MVC 模式。
在 QeePHP 的 MVC 架构中,出现了一系列的对象。这些对象各自承担不同的职责,从而实现了单一入口、请求调度等功能构成的完整运行流程。在详细阐述 QeePHP 的 MVC 工作流程之前,可以通过下面的流程图了解主要的步骤和进程。
MVC 模式的调用流程
详细MVC实现代码请查看 _code\myapp.php
目录结构
app应用
--controller
--helper
--model
--view
--myapp.php
config配置
--boot.php
core框架核心
--library/q.php
--library/orm/activerecord/meta.php
db数据库脚本
lib第三方类库
log日志
public前端公共
--index.php
tmp临时缓存
入口文件
index.php 是默认的入口文件,用于启动整个应用程序。
入口文件负责载入 boot.php 文件、QeePHP 框架的核心文件以及应用程序对象的类定义文件。接下来就是构造应用程序对象,并调用应用程序对象的 dispatching() 方法来进入 MVC 模式。
如果 dispatching() 的返回值是一个字符串,则使用 echo 输出这个字符串。这样在 AJAX 编程时,可以直接将控制器动作的返回结果回馈给客户端的 JavaScript 代码。
QeePHP API 参考手册
API 参考手册提供了 QeePHP 所有对象和方法的参考信息和用法示例。是日常使用必备的参考文档。
包 - core
Core 包是 QeePHP 核心类的集合,QeePHP 的其他所有功能都依赖核心类提供的服务
QeePHP 核心类提供下列服务:
- 设置的读取和修改;
- 类定义文件的搜索和载入;
- 对象的单子模式实现,以及对象注册和检索;
- 统一缓存接口;
- 基本工具方法;
- 类型安全的集合;
- 日志服务;
- 辅助调试工具;
- 以及运行时上下文对象。
Q
类 Q 是 QeePHP 框架的核心类,提供了框架运行所需的基本服务
QException
QException 是 QeePHP 所有异常的基础类
QColl
QColl 实现了一个类型安全的对象集合
QContext
QContext 封装了运行时上下文
QLog
类 QLog 实现了一个简单的日志记录服务
包 - mvc
在 QeePHP 中,MVC 包实现了 MVC 模式。
QeePHP 的 MVC 默认实现包含下列功能:
- 基于角色的访问控制
- URL 路由解析
- 高级视图架构
- 请求转发等
QACL
QACL 实现了权限检查服务
QController_Abstract
QController_Abstract 实现了一个其它控制器的基础类
QController_Forward
QController_Forward 将请求转发到另一个控制器动作执行
QRouter
QRouter 实现了自定义路由解析
QView_Output
类 QView_Output 用于向浏览器直接输出数据(例如下载文件)
QView_Redirect
QView_Redirect 类封装了一个浏览器重定向操作
QView_Render_PHP
QView_Render_PHP 类实现了视图架构的基础
QView_Render_PHP_Parser
QView_Render_PHP_Parser 类实现了视图的分析
包 - orm
ActiveRecord 是 QeePHP 默认的 ORM 解决方案。
QeePHP 的 ActiveRecord 支持复杂的对象关系管理,以及完善的事件响应机制。
主要特征:
- 支持超过 20 种不同的事件
- 行为插件机制可以透明的改变模型工作方式
- 完全自定义的验证规则
- 高级安全特征
- 对象关系导航
- 类型安全
- 可扩展的模型
- 元编程
QDB_ActiveRecord_Behavior_Abstract
QDB_ActiveRecord_Behavior_Abstract 抽象类是所有行为插件的基础类
QDB_ActiveRecord_Abstract
QDB_ActiveRecord_Abstract 类实现了 Active Record 模式
QDB_ActiveRecord_Association_Abstract
QDB_ActiveRecord_Association_Abstract 封装 ActiveRecord 之间的关联关系
QDB_ActiveRecord_Association_BelongsTo
QDB_ActiveRecord_Association_BelongsTo 类封装 ActiveRecord 对象之间的 belongs to 关联
QDB_ActiveRecord_Association_Coll
QDB_ActiveRecord_Association_Coll 封装了对象的关联关系,并且提供操作这些关联关系的方法
QDB_ActiveRecord_Association_HasMany
QDB_ActiveRecord_Association_HasMany 类封装数据表之间的 has many 关联
QDB_ActiveRecord_Association_HasOne
QDB_ActiveRecord_Association_HasOne 类封装了对象见的一对一关系
QDB_ActiveRecord_Association_ManyToMany
QDB_ActiveRecord_Association_ManyToMany 类封装 ActiveRecord 对象之间的 many to many 关联
QDB_ActiveRecord_Meta
QDB_ActiveRecord_Meta 类封装了 QDB_ActiveRecord_Abstract 继承类的元信息
QDB_ActiveRecord_View
QDB_ActiveRecord_View 类模拟数据库视图的形式实现 Active Record 模式
QDB_ActiveRecord_ViewMeta
QDB_ActiveRecord_ViewMeta 类封装了 QDB_ActiveRecord_View 继承类的元信息
QDB_ActiveRecord_Callbacks
QDB_ActiveRecord_Callbacks 定义了 ActiveRecord 对象及行为插件可用的回调类型
QDB_ActiveRecord_Interface
QDB_ActiveRecord_Interface 接口确定了所有 QDB_ActiveRecord_Abstract 继承类必须实现的静态方法
包 - form
QForm 是一种创新的表单封装模式,完美分离了表单的数据、行为和表现。
QForm 的主要特征:
- 完美分离表单的数据、行为和表现
- 自定义过滤器
- 自定义验证规则
- 可以从配置文件构造表单
- 完善的错误处理机制
- 100% 可定制的表单渲染
QForm_Element
QForm_Element 类封装了表单中的一个值元素
QForm_Group
类 QForm_Group 是容纳多个元素或群组的集合
QForm
类 QForm 封装了表单的数据和行为
包 - database
QeePHP 的数据库访问层支持多种数据库,并且具有强大的扩展能力。
主要特征:
- QDB_Select 实现的连贯接口,支持多种数据库查询方式
- QDB_Expr 封装了数据库表达式,方便构造灵活的查询
- QDB_Cond 封装了查询条件,可以构造任意复杂度的查询条件
- QDB_Table 实现了可扩展的表数据入口,对复合主键有完善的支持
- 可动态切换的数据库连接,满足分布式数据库应用的开发
QDB_Adapter_Abstract
QDB_Adapter_Abstract 是所有数据库驱动的抽象基础类
QDB_Adapter_Mysql
QDB_Mysql 提供了对 mysql 数据库的支持
QDB_Adapter_Pdo_Abstract
QDB_Adapter_Pdo_Abstract 类是所有 PDO 驱动的基础类
QDB_Adapter_Pdo_Exception
QDB_Adapter_Pdo_Exception 异常封装所有 PDO 操作错误
QDB_Adapter_Pdo_Pgsql
QDB_Adapter_Pdo_Pgsql 类提供对 PostgreSQL 的支持
QDB_Adapter_Pgsql
定义 QDB_Adapter_Pgsql 类
QDB_Cond
QDB_Cond 类封装复杂的查询条件
QDB
类 QDB 提供了 QeePHP 访问数据库的基本接口。
QDB_Expr
QDB_Expr 封装一个表达式
QDB_Result_Abstract
QDB_Result_Abstract 是封装查询结果对象的抽象基础类
QDB_Result_Mysql
QDB_Result_Mysql 封装了一个 mysql 查询句柄,便于释放资源
QDB_Result_Pdo
QDB_Result_Pdo 类封装了 PDO 查询结果
QDB_Result_Pgsql
QDB_Result_Pgsql 封装了一个 PostgreSQL 查询句柄,便于释放资源
QDB_Select
QDB_Select 类实现了一个数据库查询接口,提供了进行复杂查询的能力
QDB_Table
QDB_Table 类(表数据入口)封装数据表的 CRUD 操作
QDB_Table_Lite
QDB_Table_Lite类 在程序运行中创建QDB_Table对象而不用事先创建类
包 - helper
Helper 包提供了大量简单易用的辅助工具。
主要包括:
- 文件系统操作
- 数组操作
- 图像操作
- 验证码生成
- 上传文件处理
- YAML 解析与输出
- DOM 工具
- 过滤器
- 验证器
Helper_Filesys
Helper_Filesys 类提供了一组简化文件系统操作的方法
Helper_Array
Helper_Array 类提供了一组简化数组操作的方法
QDom_Document
QDom_Document 类对PHP5自带的DOMDocument进行了自己的扩展
QDom_Element
QDom_Element 类对PHP5自带的DOMElement进行了自己的扩展
QFilter
类 QFilter 实现了过滤器接口,以及一些常用的过滤器方法
Helper_Image
Helper_Image 类封装了针对图像的操作
Helper_ImageGD
Helper_ImageGD 类封装了一个 gd 句柄,用于对图像进行操作
Helper_ImgCode
Helper_ImgCode 类提供验证码生成和检验的接口
Helper_ImgCodeSimple
Helper_ImgCodeSimple 实现了一个简单样式的验证码
Helper_ImgCodeTTF
Helper_ImgCodeTTF 使用 ttf 字体生成验证码
Helper_Uploader
Helper_Uploader 类封装了针对上传文件的操作
Helper_Uploader_File
Helper_Uploader 类封装一个上传的文件
QValidator
QValidator 提供了一组验证方法,以及调用验证方法的接口
Helper_YAML
Helper_YAML 提供 yaml 文档的解析和输出服务
包 - cache
QeePHP 支持多种缓存方式,最大程度的提高运行效率。
主要支持的缓存类型:
- 基于文件的缓存
- APC
- XCache
- Memcached
QCache_APC
QCache_APC 类使用 APC 扩展来缓存数据
QCache_File
QCache_File 类提供以文件系统来缓存数据的服务
QCache_Memcached
QCache_Memcached 使用 memcache 扩展来缓存数据
QCache_Memory
QCache_Memory 在当次请求中使用内存来缓存数据
QCache_PHPDataFile
QCache_PHPDataFile 类以 .php 文件来保存 PHP 的变量内容
QCache_XCache
QCache_XCache 类使用 XCache 扩展来缓存数据
包 - webcontrols
WebControls 是用户界面组件化的核心架构。
QeePHP 的 WebControls 不但提供了一个可扩展的用户界面控件创建机制,还附带了大量常用的用户界面控件。
主要特征:
- 用户界面组件化
- 支持自定义控件
- 支持控件的无线级嵌套
- 附带的标准控件
- 与 QForm 的完美集成
QUI_Control_Abstract
QUI_Control_Abstract 是用户界面控件的基础类
Control_Input_Abstract
Control_Input_Abstract 类使所有输入框控件的基础类
Control_Button
Control_Button 封装各种类型的按钮
Control_Checkbox_Abstract
Control_Checkbox_Abstract 是所有多选框的基础类类
Control_Checkbox
构造一个多选框
Control_CheckboxGroup_Abstract
Control_CheckboxGroup_Abstract 是群组多选框的基础类
Control_CheckboxGroup
构造一个多选框组
Control_DropdownList
Control_DropdownList 构造一个下拉列表框
Control_Hidden
构造一个隐藏表单控件
Control_Label
构造一个标签控件
Control_Listbox
构造列表框
Control_Memo
构造一个多行文本框
Control_Password
密码输入框
Control_Radio
构造一个单选按钮
Control_RadioGroup
构造一组单选按钮
Control_Reset
构造一个表单重置按钮
Control_Static
构造一个静态控件
Control_Submit
构造一个表单提交按钮
Control_Textbox
单行文本框
Control_Upload
构造一个上传文件选择框
包 - behavior
行为插件是 QeePHP 为 ActiveRecord 提供的扩展机制,允许开发者透明的改变模型工作方式。
QeePHP 自带的行为插件包括:
- 快速生成仿 UUID
- 对象关系助手
- 对象属性唯一性检查
- 用户角色绑定
更多的行为插件可以在 QeePHP.com 开源项目与插件平台 上获得。
Model_Behavior_AclUser
Behavior_AclUser 实现基于 ACL 的用户访问控制
Model_Behavior_Fastuuid
Behavior_Fastuuid 为模型生成 64 位整数或混淆字符串的不重复 ID
Model_Behavior_Relation
Behavior_Relation 为 ActiveRecord 添加一组直接操作关联对象的方法
Model_Behavior_Uniqueness
Behavior_Uniqueness 用于检查指定的属性是否存在重复值
包 - exception
包含了 QeePHP 自带的所有异常类。
QeePHP 充分利用异常来指示错误,包含了大量的异常类。
QCache_Exception
QCache_Exception 异常封装所有的缓存错误
Q_ClassFileExistsException
Q_ClassFileExistsException 异常指示类定义文件已经存在
Q_ClassNotDefinedException
Q_ClassNotDefinedException 异常指示指定的文件中没有定义需要的类
Q_CreateDirFailedException
Q_CreateDirFailedException 异常封装指示创建目录失败
Q_CreateFileFailedException
Q_CreateFileFailedException 异常指示创建文件失败
Q_FileNotFoundException
Q_FileNotFoundException 异常指示文件没有找到错误
Q_FileNotReadableException
Q_FileNotReadableException 异常指示文件无法读取错误
Q_IllegalClassNameException
Q_IllegalClassNameException 异常指示无效的类名
Q_IllegalFilenameException
Q_IllegalFilenameException 异常指示存在无效字符的文件名
QLog_Exception
QLog_Exception 异常封装与 QLog 有关的错误
Q_NotImplementedException
Q_NotImplementedException 异常指示未实现的方法
Q_RemoveDirFailedException
Q_RemoveDirFailedException 异常指示删除目录失败
QDB_Exception
QDB_Exception 用于封装数据库操作相关的异常
QDB_Exception_DuplicateKey
QDB_Exception_DuplicateKey 异常指示出现重复主键值错误
QDB_Select_Exception
QDB_Select_Exception 异常封装所有 QDB_Select 相关的错误。
QDB_Table_Exception
QDB_Table_Exception 异常封装所有 QDB_Table 的错误
AclUser_Exception
AclUser_Exception 异常是所有 acluser 插件异常的基础类
AclUser_DuplicateUsernameException
AclUser_DuplicateUsernameException 异常指示重复的用户名
AclUser_UsernameNotFoundException
AclUser_UsernameNotFoundException 异常指示用户名不存在
AclUser_WrongPasswordException
AclUser_WrongPasswordException 异常指示密码不正确
QForm_Exception
QForm_Exception 封装所有与 QForm 有关的错误
QDom_Exception
QDom_Exception 用于封装 DOM 操作相关的异常
QValidator_Exception
QValidator_Exception 封装所有与验证有关的错误
QValidator_ValidateFailedException
QValidator_ValidateFailedException 异常封装了验证失败事件
QDB_ActiveRecord_Association_Exception
QDB_ActiveRecord_Association_Exception 封装所有对象关联发生的错误
QDB_ActiveRecord_Association_NotDefinedException
QDB_ActiveRecord_Association_NotDefinedException 异常指示未定义的关联
QDB_ActiveRecord_Association_RejectException
QDB_ActiveRecord_Association_RejectException 异常指示某个操作被拒绝
QDB_ActiveRecord_Behavior_Exception
QDB_ActiveRecord_Behavior_Exception 指示与行为插件相关的错误
QDB_ActiveRecord_Exception
QDB_ActiveRecord_Exception 封装所有与 ActiveRecord 有关的错误
QDB_ActiveRecord_CallToUndefinedMethodException
QDB_ActiveRecord_CallToUndefinedMethodException 异常指示未定义的方法
QDB_ActiveRecord_ChangingReadonlyPropException
QDB_ActiveRecord_ChangingReadonlyPropException 指示某个属性是只读
QDB_ActiveRecord_CompositePKIncompatibleException
QDB_ActiveRecord_CompositePKIncompatibleException 异常指示某项功能与复合主键不兼容
QDB_ActiveRecord_DestroyWithoutIdException
QDB_ActiveRecord_DestroyWithoutIdException 指示视图删除一个没有主键值的对象
QDB_ActiveRecord_ExpectsAssocPropException
QDB_ActiveRecord_ExpectsAssocPropException 异常指示对象的关联属性没有设置
QDB_ActiveRecord_Meta_Exception
QDB_ActiveRecord_Meta_Exception 封装所有与 QDB_ActiveRecord_Meta 相关的错误
QDB_ActiveRecord_SettingPropTypeMismatchException
QDB_ActiveRecord_SettingPropTypeMismatchException 异常指示指定给属性的值类型不匹配
QDB_ActiveRecord_UndefinedPropException
QDB_ActiveRecord_UndefinedPropException 异常指示未定义的属性
QDB_ActiveRecord_ValidateFailedException
QDB_ActiveRecord_ValidateFailedException 异常封装了 ActiveRecord 对象的验证失败事件
QACL_Exception
QACL_Exception 异常封装了 QACL 相关的错误
QRouter_Exception
QRouter_Exception 异常封装路由相关的错误
QRouter_InvalidRouteException
QRouter_InvalidRouteException 异常指示无效的路由规则
QRouter_RouteNotFoundException
QRouter_RouteNotFoundException 异常指示指定的路由规则不存在
QView_Exception
QView_Exception 异常封装所有与 QView 相关的错误
QUI_Exception
QUI_Exception 封装所有与 QUI 有关的异常
包 - debug
提供帮助进行应用程序调试的工具。
QDebug
QDebug 为开发者提供了调试应用程序的一些辅助方法
QDebug_FirePHP
QDebug_FirePHP 类提供对 FirePHP 的支持
QeePHP的更多相关文章
- qeephp 记录下
百度百科: https://baike.baidu.com/item/qeephp/8328612?fr=aladdin 官方地址: http://www.qeephp.cn/app/index.ph ...
- QeePHP View视图的默认变量与新增变量
新版本的QeePHP(V13.1)中,视图页面已经默认添加了几个常用变量 $_app; //控制器所属的应用程序 $_login_user; //登陆用户信息 直接在视图页面直接使用变量即可. 如果 ...
- Nginx 配置详解
http://www.cnblogs.com/analyzer/articles/1377684.html 本文转自:http://blog.c1gstudio.com/archives/434 推荐 ...
- Nginx 伪静态教程
1.将多个域名指向同一web目录: server_name www.php100.com php100.com; rewrite ^/$ / redirect; 2.将不带www的域名301转向到带w ...
- nodejs爬虫
前言 几个月之前,有同事找我要PHP CI框架写的OA系统.他跟我说,他需要学习PHP CI框架,我建议他学习大牛写的国产优秀框架QeePHP. 我上QeePHP官网,发现官方网站打不开了,GOOGL ...
- nginx url重写 rewrite实例
本文介绍下,在nginx中实现Url重写,学习rewrite的具体用法,有需要的朋友参考下吧. 原文地址:http://www.360doc.com/content/14/0202/20/142341 ...
- Nginx 301重定向域名
为何要使用301重定向 在网站建设中需要网页重定向的情况很多:如网页目录结构变动,网页重命名.网页的扩展名改变.网站域名改变等.如果不做重定向,用户的收藏和搜索引擎数据库中的旧地址只能让访客得到一个4 ...
- PHP开发框架[国内框架]
1.Thinkphp http://thinkphp.cn/ 2.Brophp http://www.brophp.com/zf/ 由LAMP兄弟连打造 3.WindFramework http ...
- php和java的一些比较
现在市场上的电子商务软件基本上可归结为两大阵营,即PHP阵营和Java阵营.但对接触电子商务不久的用户来说,看到的往往只是它们的表相,只是明显的价格差异,却很难看出它们之间的实际差异.其实,PHP+ ...
随机推荐
- vant库在vue全局引入toast组件
第一步: 在config中引入 // 全局引入vant的提示框 import { Toast } from "vant"; Vue.use(Toast); 第二步: 在组要的.vu ...
- 基础语法-循环结构do...while
基础语法-循环结构do...while 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.do...while语句格式 do{ 执行语句; }while(条件表达式); 温馨提示: ...
- C语言预处理理论-宏定义2
宏定义21.带参宏和带参函数的区别(1)宏定义是在预处理期间处理的,而函数是在编译期间处理的.这个区别带来的实质差异是:宏定义最终是在调用宏的地方把宏体原地展开,而函数是在调用函数处跳转到函数中去执行 ...
- C语言预处理理论-宏定义1
宏定义1宏定义的规则和使用解析(1)宏定义的解析规则就是:在预处理阶段由预处理器进行替换,这个替换是原封不动的替换.(2)宏定义替换会递归进行,直到替换出来的值本身不再是一个宏为止.#define M ...
- ansible简单部署前端
pipeline{ agent any parameters { choice(name: 'server_name', choices: ['xx','xx'], description: 'ser ...
- java向python ,text文件动态传参或传值问题完美解决
由于业务需要对python文件进行参数传递,通过下面两个java方法完美解决此问题,我的思路是:首先我要先把上次写的参数删除,第二我要新的参数写到python文件中. 第一个方法解决了删除上次传递的参 ...
- javascript面向对象编程的3种常见封装形式解析
javascript如何才能脱离函数式编程,拥抱面向对象编程呢,常见的有3种形式,其它形式可以说都是这3种的变种. 1.直接定义对象直接量的形式 var Util={ getType: ...
- jar包-循环遍历-开机启动服务-微服务-多项目拷贝-pid杀死进程-mysql备份脚本-防火墙检测脚本
vi /root/serverkaiji.sh #!/bin/bash ls /tlvnksc/ | egrep -v "^c|^f" > /root/service.lis ...
- (递归)Hanoi Tower
#include<stdio.h>void move(int n,char a,char b){ printf("将第%d个盘子从%c移动到%c\n",n,a,b); ...
- ✨vue引入组件 axios和icont矢量图标
axios 在vue项目开发中,我们使用axios进行ajax请求,很多人一开始使用axios的方式,会当成vue-resoure的使用方式来用,即在主入口文件引入import VueResource ...