[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管理
- 請求環境
- 返回響應
- 安全
- 加密/解密
- 安全
- 國際化
- 國際化
- 多語言支持