# 使用命名空间(Working with Namespaces)
[Namespaces](http://php.net/manual/en/language.namespaces.php)可以用来避免类名的冲突,比如如果在一个应用中有两个控制器使用同样的名称,那么可以用namespace来区分他们。 另外命名空间在创建组件或者模块的时候也是非常有用的。
## 设置框架(Setting up the framework)
Using namespaces has some implications when loading the appropriate controller. To adjust the framework behavior to namespaces is necessary to perform one or all of the following tasks:
Use an autoload strategy that takes into account the namespaces, for example with[Phalcon\\Loader](http://docs.iphalcon.cn/api/Phalcon_Loader.html):
~~~
<?php
$loader->registerNamespaces(
[
"Store\\Admin\\Controllers" => "../bundles/admin/controllers/",
"Store\\Admin\\Models" => "../bundles/admin/models/",
]
);
~~~
Specify it in the routes as a separate parameter in the route’s paths:
~~~
<?php
$router->add(
"/admin/users/my-profile",
[
"namespace" => "Store\\Admin",
"controller" => "Users",
"action" => "profile",
]
);
~~~
Passing it as part of the route:
~~~
<?php
$router->add(
"/:namespace/admin/users/my-profile",
[
"namespace" => 1,
"controller" => "Users",
"action" => "profile",
]
);
~~~
If you are only working with the same namespace for every controller in your application, then you can define a default namespace in the Dispatcher, by doing this, you don’t need to specify a full class name in the router path:
~~~
<?php
use Phalcon\Mvc\Dispatcher;
// Registering a dispatcher
$di->set(
"dispatcher",
function () {
$dispatcher = new Dispatcher();
$dispatcher->setDefaultNamespace(
"Store\\Admin\\Controllers"
);
return $dispatcher;
}
);
~~~
## 控制器加入命名空间(Controllers in Namespaces)
The following example shows how to implement a controller that use namespaces:
~~~
<?php
namespace Store\Admin\Controllers;
use Phalcon\Mvc\Controller;
class UsersController extends Controller
{
public function indexAction()
{
}
public function profileAction()
{
}
}
~~~
## 模型加入命名空间(Models in Namespaces)
Take the following into consideration when using models in namespaces:
~~~
<?php
namespace Store\Models;
use Phalcon\Mvc\Model;
class Robots extends Model
{
}
~~~
If models have relationships they must include the namespace too:
~~~
<?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",
]
);
}
}
~~~
In PHQL you must write the statements including namespaces:
~~~
<?php
$phql = "SELECT r.* FROM Store\Models\Robots r JOIN Store\Models\Parts p";
~~~
- 简介
- 安装
- 安装(installlation)
- XAMPP下的安装
- WAMP下安装
- Nginx安装说明
- Apache安装说明
- Cherokee 安装说明
- 使用 PHP 内置 web 服务器
- Phalcon 开发工具
- Linux 系统下使用 Phalcon 开发工具
- Mac OS X 系统下使用 Phalcon 开发工具
- Windows 系统下使用 Phalcon 开发工具
- 教程
- 教程 1:让我们通过例子来学习
- 教程 2:INVO简介
- 教程 3: 保护INVO
- 教程4: 使用CRUD
- 教程5: 定制INVO
- 教程 6: Vökuró
- 教程 7:创建简单的 REST API
- 组件
- 依赖注入与服务定位器
- MVC架构
- 使用控制器
- 使用模型
- 模型关系
- 事件与事件管理器
- Behaviors
- 模型元数据
- 事务管理
- 验证数据完整性
- Workingwith Models
- Phalcon查询语言
- 缓存对象关系映射
- 对象文档映射 ODM
- 使用视图
- 视图助手
- 资源文件管理
- Volt 模版引擎
- MVC 应用
- 路由
- 调度控制器
- Micro Applications
- 使用命名空间
- 事件管理器
- Request Environmen
- 返回响应
- Cookie 管理
- 生成 URL 和 路径
- 闪存消息
- 使用 Session 存储数据
- 过滤与清理
- 上下文编码
- 验证Validation
- 表单_Forms
- 读取配置
- 分页 Pagination
- 使用缓存提高性能
- 安全
- 加密与解密 Encryption/Decryption
- 访问控制列表
- 多语言支持
- 类加载器 Class Autoloader
- 日志记录_Logging
- 注释解析器 Annotations Parser
- 命令行应用 Command Line Applications
- Images
- 队列 Queueing
- 数据库抽象层
- 国际化
- 数据库迁移
- 调试应用程序
- 单元测试
- 进阶技巧与延伸阅读
- 提高性能:下一步该做什么?
- Dependency Injection Explained
- Understanding How Phalcon Applications Work
- Api
- Abstract class Phalcon\Acl