# 函數
## 函數命名
函數命名,全部使用小寫,單詞直接使用?`_`?連接,函數名的名稱應與函數功能相符,且函數名中使用的單詞,應該是全稱單詞.
## 函數文件
二次開發時增加的函數,盡量使用獨立的新函數文件保存,通過配置載入,以方便未來的升級.
## 代碼質量
由于函數通常會被多次調用,因此應確保函數代碼質量,仔細檢測測試保證函數在執行過程中不會拋出**任何級別的PHP錯誤**,否則部署后可能引起嚴重的性能問題.
## 其他
函數應該少而精干,數據的增刪改查,盡量通過模型方法實現,以利于代碼管理維護.通常定義函數是為了在模板中查詢和轉換數據,或者在不同模塊之間實現代碼重用.
# 類庫
## 模塊類庫
模塊的類庫,即Application目錄下的控制器,模型等類。文件和類名的命名規則不變,只是控制器命名**默認**使用**Controller**代替了Action,如果還想用Action,在Common/Config/config.php 中配置?`DEFAULT_C_LAYER=>'Action'`
模塊類庫的命名空間定義見:?[控制器定義](http://document.thinkphp.cn/manual_3_2.html#define_controller)?和?[模型定義](http://document.thinkphp.cn/manual_3_2.html#define_model)
## 插件類庫
即Addons目錄下插件的類,文件模板如下:
文件名:`Addons/插件名/插件名Addon.class.php`
~~~
<?php
namespace Addons\插件名;
use Common\Controller\Addon;
class 插件名Addon extends Addon{
}
~~~
文件名:`Addons/插件名/Controller/控制器名Controller.class.php`
~~~
<?php
namespace Addons\插件名\Controller;
use Home\Controller\AddonsController;
class 控制器名Controller extends AddonsController{
}
~~~
文件名:`Addons/插件名/Model/模型名Model.class.php`
~~~
<?php
namespace Addons\插件名\Model;
use Think\Model;
class 模型名Model extends Model{
}
~~~
## ThinkPHP框架類庫
OneThink基于ThinkPHP3.2,類庫文件位于`ThinkPHP/Library`目錄,框架類庫全部使用命名空間載入,在控制器和模型中使用框架類庫時,只需代碼前面用 use 聲明要載入的類庫的命名空間即可.
關于命名空間,參考[ThinkPHP3.2文檔](http://document.thinkphp.cn/manual_3_2.html#namespace)
您可以在?`ThinkPHP/Library`目錄下創建新的目錄放置其他類庫文件,相應地這些類庫文件必須修改類庫的命名空間定義和訪問.