[TOC]
# 使用命名空间
[命名空间](http://php.net/manual/en/language.namespaces.php) 可用于避免类名冲突;这意味着如果在具有相同名称的应用程序中有两个控制器,则可以使用命名空间来区分它们。命名空间对于创建包或模块也很有用。
## 建立框架
在加载适当的控制器时,使用命名空间会有一些影响。要调整框架行为以命名空间,必须执行以下一项或所有任务:
使用考虑名称空间的自动加载策略,例如使用`Phalcon\Loader`:
```php
<?php
$loader->registerNamespaces(
[
'Store\Admin\Controllers' => '../bundles/admin/controllers/',
'Store\Admin\Models' => '../bundles/admin/models/',
]
);
```
在路由中将其指定为路径路径中的单独参数:
```php
<?php
$router->add(
'/admin/users/my-profile',
[
'namespace' => 'Store\Admin',
'controller' => 'Users',
'action' => 'profile',
]
);
```
将其作为路由的一部分传递:
```php
<?php
$router->add(
'/:namespace/admin/users/my-profile',
[
'namespace' => 1,
'controller' => 'Users',
'action' => 'profile',
]
);
```
如果您只为应用程序中的每个控制器使用相同的命名空间,则可以在Dispatcher中定义默认命名空间,通过这样做,您不需要在路由器路径中指定完整的类名:
```php
<?php
use Phalcon\Mvc\Dispatcher;
// 注册调度器
$di->set(
'dispatcher',
function () {
$dispatcher = new Dispatcher();
$dispatcher->setDefaultNamespace(
'Store\Admin\Controllers'
);
return $dispatcher;
}
);
```
## 命名空间中的控制器
以下示例显示如何实现使用名称空间的控制器:
```php
<?php
namespace Store\Admin\Controllers;
use Phalcon\Mvc\Controller;
class UsersController extends Controller
{
public function indexAction()
{
}
public function profileAction()
{
}
}
```
## 命名空间中的模型
在命名空间中使用模型时,请考虑以下因素:
```php
<?php
namespace Store\Models;
use Phalcon\Mvc\Model;
class Robots extends Model
{
}
```
如果模型有关系,它们也必须包含命名空间:
```php
<?php
namespace Store\Models;
use Phalcon\Mvc\Model;
class Robots extends Model
{
public function initialize()
{
$this->hasMany(
'id',
'Store\Models\Parts',
'robots_id',
[
'alias' => 'parts',
]
);
}
}
```
在PHQL中,您必须编写包含名称空间的语句:
```php
<?php
$phql = 'SELECT r.* FROM Store\Models\Robots r JOIN Store\Models\Parts p';
```
- 常规
- Welcome
- 贡献
- 生成回溯
- 测试重现
- 单元测试
- 入门
- 安装
- Web服务器设置
- WAMP
- XAMPP
- 教程
- 基础教程
- 教程:创建一个简单的REST API
- 教程:Vökuró
- 提升性能
- 教程:INVO
- 开发环境
- Phalcon Compose (Docker)
- Nanobox
- Phalcon Box (Vagrant)
- 开发工具
- Phalcon开发者工具的安装
- Phalcon开发者工具的使用
- 调试应用程序
- 核心
- MVC应用
- 微应用
- 创建命令行(CLI)应用程序
- 依赖注入与服务定位
- MVC架构
- 服务
- 使用缓存提高性能
- 读取配置
- 上下文转义
- 类加载器
- 使用命名空间
- 日志
- 队列
- 数据库
- 数据库抽象层
- Phalcon查询语言(PHQL)
- ODM(对象文档映射器)
- 使用模型
- 模型行为
- ORM缓存
- 模型事件
- 模型元数据
- 模型关系
- 模型事务
- 验证模型
- 数据库迁移
- 分页
- 前端
- Assets管理
- 闪存消息
- 表单
- 图像
- 视图助手(标签)
- 使用视图
- Volt:模板引擎
- 业务逻辑
- 访问控制列表(ACL)
- 注解解析器
- 控制器
- 调度控制器
- 事件管理器
- 过滤与清理
- 路由
- 在session中存储数据
- 生成URL和路径
- 验证
- HTTP
- Cookies管理
- 请求环境
- 返回响应
- 安全
- 加密/解密
- 安全
- 国际化
- 国际化
- 多语言支持