## Idea Framework命名空間介紹
### **依賴項目路徑命名**
在框架中,**為了使用起來方便,命名空間的命名是以目錄路徑來作為為依據的。可以將Idea框架中的命名空間當作是文件路徑標識來看待。**
>[warning]需要注意的是:命名空間和目錄沒有任何關系,只是它引用了文件系統管理的概念而已
### 在項目中,如果未聲明命名空間,那么它們都處于公共空間中,用反斜杠`"\"`來表示,比如常見的需要得到PDO對象:
~~~
$pdo=new \PDO();
~~~
### 配置命名空間目錄映射
應用命名空間為`app`,如果需要修改應用命名空間,除了需要修改應用目錄下所有類文件的命名空間還需要修改`namespace_map_list`與`app_namespace`中相應的值。
~~~
return [
/**
* 命名空間映射列表,自動加載依賴
* system為框架命名空間,不建議修改,如果修改還需要修改框架所有文件中的命名空間定義
* app為應用命名空間,修改該項之后,還需指定app_namespace為相關值
*/
'namespace_map_list' => [
'system' => FRAMEWORK_PATH . 'core',
'app' => ROOT_PATH . 'application',
//'test' => ROOT_PATH.'test',
],
/**
* 應用類庫的根命名空間
*/
'app_namespace' => 'app',
]
~~~
如果在入口文件修改了應用名
~~~
define('APP_NAME','shop');
~~~
除了要將文件夾`application`重命名為`shop`之外,還需要在`shop/config/Config.php`中修改命名空間地址映射
~~~
'namespace_map_list' => [
'system' => FRAMEWORK_PATH . 'core',
'app' => ROOT_PATH . 'shop',
],
/**
* 應用類庫的根命名空間
*/
'app_namespace' => 'app',
~~~
如果還需要修改應用命名空間
~~~
'namespace_map_list' => [
'system' => FRAMEWORK_PATH . 'core',
'shop' => ROOT_PATH . 'shop',
],
/**
* 應用類庫的根命名空間
*/
'app_namespace' => 'shop',
~~~
在應用類文件中需要重新定義命名空間,比如在模型類中
例:`shop/admin/model/User.php`
~~~
<?php
namespace shop\admin\model;
use \system\Model;
class User extends Model
{
}
~~~
需要注意的是: **所有框架基類的命名空間均為`\system`**