QueryPHP V 4.0 采用命名空间的方式来有效组织项目的代码,系统在运行过程中会自动注册部分命名空间,通过自动注册的命名空间与 autoload 结合起来从而实现高效的文件自动加载。
# 系统注册命名空间组
为了满足项目开发需求, QueryPHP 在项目运行过程中会注册多个系统惯性命名空间,命名空间遵循 **PSR-4** 自动加载规范。
### 1):框架自身注册
系统为框架自身所在路径注册了一个命名空间,我们在应用中通过如下 Q 顶层命名空间访问到我们的类。
~~~
/**
* 注册框架命名空间
*/
Q::import ( 'Q', Q_PATH, [
'ignore' => [
'resource'
]
] );
~~~
**例子:**
继承框架提供的基类控制器 **controller**,实际对应的路径为 **<project>/lib/queryphp/src/mvc/controller.php**
~~~
class index extend \Q\mvc\controller { }
~~~
### 2):项目公共文件注册
系统为项目公共组件所在路径注册了一个命名空间,我们在应用中通过如下 com 顶层命名空间访问到我们的类。
~~~
// 注册公共组件命名空间
Q::import ( 'com', $this->com_path, [
'ignore' => [
'i18n',
'option',
'theme'
]
] );
~~~
**例子:**
继承公共组件提供的基类模型 **base**,实际对应的路径为 **<project>/com/model/base.php**
~~~
class user extend \com\model\base { }
~~~
### 3):项目应用文件注册
系统为应用所在路径注册了一个命名空间,我们在应用中通过如下 app_name 顶层命名空间访问到我们的类。
~~~
// 注册命名空间
Q::import ( $this->app_name, $this->app_path . '/' . $this->app_name, [
[
'i18n',
'option',
'theme'
]
] );
~~~
**例子:**
继承 home 提供的基类控制器 **base**,实际对应的路径为 **<project>/app/home/controller/base.php**
~~~
class blog extend \home\controller\base { }
~~~
# 手动注册命名空间组
系统通过 Q::import 来导入一个目录(包括子目录)所有命名空间,从而实现自动载入自主载入。
~~~
// 注册命名空间
Q::import ( 'test', PROJECT_PATH . '/test', [
[
'not'
]
] );
~~~
> 提示:我们注册一个 **项目** 下面的 **test** 命名空间组,这个时候我们可以自由地导入 **test** 里面的类了。
**例子:**
继承 test 提供的一个 excel 文档处理类 **phpexcel**,实际对应的路径为 **<project>/test/phpexcel/excel.php**
~~~
$objExcel = new \test\phpexcel\excel();
~~~
# 手动注册单个命名空间
Q::import 也是通过 Q::addNamespace 来导入命名空间的,我们这里也可以通过这个方法注册命名空间。
~~~
// 添加命名空间
Q::addNamespace ( 'hello\world', PROJECT_PATH . '/hello/world');
~~~
> 提示:Q::addNamespace 的第二个参数可以传入一个数组,同一个命名空间可以支持多个路径。
**例子:**
继承 hello\world 提供的一个 word 文档处理类 **phpword**,实际对应的路径为 **<project>/hello/world/phpword.php**
~~~
$objWord = new \hello\world\phpword();
~~~
# 总结
命名空间规范是整个框架基础,理解好这里有助于掌握整个框架。
- 关于 QueryPHP
- 获取 QueryPHP
- 环境要求
- 许可协议 Free
- 执行流程 MVC
- 命名规范 $sName
- 目录结构 DIR
- 单一入口 index.php
- 响应客户端请求 URL
- 命名空间与自动载入 Autoload
- 路由
- 路由导入
- 批量导入
- 参数正则
- 分组定义
- 路由绑定
- 路由域名
- 分层控制器
- 默认和初始化APP
- 默认控制器和方法
- url 模式
- url 生成
- url 伪静态
- url 重写
- url 重定向
- 控制器绑定
- 方法器分层
- 控制器 __init
- 控制器方法交互
- 模板引擎语法
- C变量输出 $sName
- C变量支持函数和方法 $sName|trim
- C快捷输出 ~
- C标签简化 Css & Javascript
- C默认值 eq 三元运算符
- C变量运算符 +-
- 变量递增递减 ++--
- C循环数据 list
- N变量赋值 assign
- N循环数据 list
- N循环数据高级版 lists
- C循环数据 while
- N循环数据 while
- C循环数据 for
- N循环数据 for
- C条件判断 if
- N条件判断 if
- 标签嵌套无限层级
- N循环流程 break & continue
- N使用 PHP 代码
- N包含子模板 include
- J模板引擎 intro
- J条件判断 if
- J循环数据 each
- J变量 & 表达式
- J变量支持函数和方法 hello|test
- J默认值 eq 三元运算符
- J框架前端组件 jquery.queryphp.js
- J前端 CSS 规范
- J前端 JS 规范
- 保护标签自身 tagself
- 数据库
- 数据库配置
- 执行原生 sql 语句
- 数据库事务
- 数据库构造器 prefix
- 数据库构造器 table
- 数据库构造器 forceIndex
- 数据库构造器 where
- 数据库构造器 bind
- 数据库构造器 join
- 数据库构造器 union
- 数据库构造器 orderBy
- 数据库构造器 groupBy
- 数据库构造器 having
- 数据库构造器 distinct
- 数据库构造器 aggregate
- 数据库构造器 limit
- 数据库构造器 forUpdate
- 数据库构造器 columns
- 数据库构造器 reset
- 数据库集合查询
- 数据库查询数据 get
- 数据库查询多条数据 getAll
- 数据库查询单条数据 getOne
- 数据库查询聚合查询 aggregate
- 数据库写入数据 insert
- 数据库写入数据 insertAll
- 配置
- 配置格式
- 惯性配置
- 配置文件
- 读取配置
- 设置配置
- 删除配置
- 日志
- 日志配置参数
- 日志路径
- 日志过滤器
- 日志处理器
- 缓存
- 缓存配置参数
- 缓存路径
- 缓存指定时间
- COOKIE
- COOKIE 配置参数
- 开发调试
- 页面 trace