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 记录下的更多相关文章
- 随便记录下系列 - node->express
随便记录下系列 - node->express 文章用啥写?VsCode. 代码用啥写?VsCode. 编辑器下载:VsCode 一.windows下安装node.js环境: 下载地址 相比以前 ...
- 记录下UIButton的图文妙用和子控件的优先显示
UIButton的用处特别多,这里只记录下把按钮应用在图文显示的场景,和需要把图片作为按钮的背景图片显示场景: 另外记录下在父控件的子控件优先显示方法(控件置于最前面和置于最后面). 先上效果图: 1 ...
- 记录下ECharts的一些功能
用到ECharts记录下一些功能免得以后找文档找不到. 这个博客对ECharts讲解很全面 http://www.stepday.com/my.stepday/?echarts // 使用 requi ...
- C#值类型以及默认值记录下
C#的值类型有bool,byte,sbyte,decimal,double,float,int,uint,long,string等 如果我们擅长使用默认值,可以帮助我们减少带来赋值及代码编写. 比如我 ...
- 记录下mybatis中#{}和${}传参的区别
最近在用mybatis,之前用过ibatis,总体来说差不多,不过还是遇到了不少问题,再次记录下, 比如说用#{},和 ${}传参的区别, 使用#传入参数是,sql语句解析是会加上"&quo ...
- 记录下url拼接的多条件筛选js
本着为提高工作效率百度或者google这些代码发现拿过来的都不好用,然后自己写了个,写的一般但记录下以后再优化 <html> <head> <script> $(f ...
- 记录下Webapi签名机制
首先,写这篇文章的原因是因为最近某一个项目中的接口被人为调用了,导致了数据库数据被串改.虽然是内部人无意点的,但还是引起了我的担忧,所有整理了下关于Webapi的相关签名机制. 一.我们在开发接口时, ...
- 记录下项目中常用到的JavaScript/JQuery代码二(大量实例)
记录下项目中常用到的JavaScript/JQuery代码一(大量实例) 1.input输入框监听变化 <input type="text" style="widt ...
- 记录下项目中常用到的JavaScript/JQuery代码一(大量实例)
一直没有系统学习Javascript和Jquery,每次都是用到的时候去搜索引擎查,感觉效率挺低的.这边把我项目中用的的记录下,想到哪写哪,有时间再仔细整理. 当然,由于我主要是写后端java开发,而 ...
随机推荐
- buntu14.04和16.04官方默认更新源sources.list和第三方源推荐(干货!)转
配置完成后: sudo apt-get update 安装和删除软件: sudo apt-get install sudo apt-get remove buntu14.04和16.04官方默认更新源 ...
- Linux学习之挂载光盘和U盘(六)
Linux下挂载光盘和U盘 挂载 linux下硬盘.U盘.软盘.移动硬盘都必须挂载后才能使用,不过硬盘的挂载是系统自动进行的. linux中每一个硬件都有一个设备文件名,就是将U盘什么的设备文件名与挂 ...
- js时间戳转换时间、距当前时间
// 1.时间戳转化成时间格式 function getTime(times) { return new Date(parseInt(times) * 1000).toLocaleString().r ...
- 【Ray Tracing The Next Week 超详解】 光线追踪2-7 任意长方体 && 场景案例
上一篇比较简单,很久才发是因为做了一些好玩的场景,后来发现这一章是专门写场景例子的,所以就安排到了这一篇 Preface 这一篇要介绍的内容有: 1. 自己做的光照例子 2. Cornell box画 ...
- Python中按值来获取指定的键
转自: https://blog.csdn.net/Jerry_1126/article/details/87907162 Python字典中的键是唯一的,但不同的键可以对应同样的值,比如说uid,可 ...
- HDU.1536.S-Nim(博弈论 Nim)
题目链接 \(Description\) 给定一个集合S,每次只能拿S中某个元素个数的石子.每组数据有多组询问,询问给出m堆石子个数,问先手是否必胜.有多组数据. 1. 首先对操作数组排个序,再预处理 ...
- 图的基本操作(基于邻接矩阵):图的构造,深搜(DFS),广搜(BFS)
#include <iostream> #include <stdio.h> #include <cstdlib> #include <cstring> ...
- linux VIM 下的语法高亮及自动缩进
显示行号 set number 自动缩进有两个选项 set autoindent set cindent autoindent 就是自动缩进的意思,当你在输入状态用回车键插入一个新行,或者在 norm ...
- 搜索+剪枝——POJ 1011 Sticks
搜索+剪枝--POJ 1011 Sticks 博客分类: 算法 非常经典的搜索题目,第一次做还是暑假集训的时候,前天又把它翻了出来 本来是想找点手感的,不想在原先思路的基础上,竟把它做出来了而且还是0 ...
- oracle data integrator与大数据平台的集成
在最新版本的ODI中,通过使用各种知识模块,可在统一的界面上实现对传统数据库.hive, pig, spark, hdfs等的ETL操作,满足在同一系统或采用相同的方式实现ETL功能. 详细的内容可参 ...