標籤:value ring lang 字串 esc space 函數名 構造 函數參數
###php編碼規範
-------
* sql過長
```
$sql = <<<SQL
SELECT delivery_id
FROM d_test
WHERE delivery_id
IN (123,234)
GROUP BY delivery_id
HAVING SUM(send_number) <= 0;
SQL;
```
* if等控制結構條件過長
```
if ($a > 0
&& $b > 0
&& $c > 0
&& $d > 0
&& $e > 0) {
}
```
* 方法或函數參數大於三個換行
```
public function tooLangFunction(
$valueOne = ‘‘,
$valueTwo = ‘‘,
$valueThree = ‘‘,
$valueFour = ‘‘,
$valueFive = ‘‘,
$valueSix = ‘‘)
{
//coding...
}
```
* 鏈式操作超過兩個
```
$this->nameTest->functionOne()
->functionTwo()
->functionThree();
```
* 方法(類/trait中)名稱必須符合 camelCase 式的小寫開頭駝峰命名規範。
```
class StudlyCaps
{
public function studlyCaps()
{
// coding...
}
}
```
* 函數名稱必須符合 snake_case 式的底線式命名規範。
```
function snake_case()
{
// coding...
}
```
* 類/trait/Interface的命名必須遵循 StudlyCaps 大寫開頭的駝峰命名規範。
```
class StudlyCaps
{
}
trait StudlyCaps
{
}
Interface StudlyCaps
{
}
```
* 私人的(private)方法(類/trait中)名稱必須符合 _camelCase 式的前置底線小寫開頭駝峰命名規範。
```
class StudlyCaps
{
private function _studlyCaps()
{
// coding...
}
}
```
* 方法名稱 第一個單詞 為動詞。
```
class StudlyCaps
{
public function doSomething()
{
// coding...
}
}
```
* 每個 namespace 命名空間聲明語句塊 和 use 聲明語句塊後面,必須 插入一個空白行。
```
namespace Standard;
// 空一行
use Test\TestClass;//use引入類
// 空一行
```
* 數組php5.4以後,使用 []代替array
```
$a = [
‘aaa‘ => ‘aaa‘,
‘bbb‘ => ‘bbb‘
];
```
* 單引號多引號,
字串中無變數,單引號
字串中有變數,雙引號
```
$str = ‘str‘;
$arg = "$str";
```
* 聲明類或者方法或函數添加描述&屬性描述&作者
```
/**
* 類描述
*
* desc
*/
class StandardExample
{
/**
* 常量描述.
*
* @var string
*/
const THIS_IS_A_CONST = ‘‘;
/**
* 屬性描述.
*
* @var string
*/
public $nameTest = ‘‘;
/**
* 建構函式.
*
* 建構函式描述
* @author name <email>
* @param string $value 形參名稱/描述
* @return 傳回值類型 傳回值描述
* 傳回值類型:string,array,object,mixed(多種,不確定的),void(無傳回值)
*/
public function __construct($value = ‘‘)
{
// coding...
}
```
* api方法提供測試範例example
```
/**
* 成員方法名稱.
*
* 成員方法描述
*
* @param string $value 形參名稱/描述
*
* @example domain/api/controller/action?argu1=111&argu2=222
*/
public function testFunction($value = ‘‘)
{
// code...
}
```
* 使用try…catch…
```
try {
// coding...
} catch (\Exception $e) {
// coding...
}
```
* 連續調用多個方法(大於3個)使用foreach
```
// 改寫doSome為doSomething
class StandardExample
{
/**
* 方法列表
*
* @var array
*/
private $_functionList = [];
public function __construct($functionList = array())
{
$this->_functionList = $value;
}
public function doSome()
{
$this->functionOne();
$this->functionTwo();
$this->functionThree();
$this->functionFour();
}
public function doSomething()
{
foreach($this->_functionList as $function) {
$this->$function();
}
}
...
}
```
* 檔案頂部進行著作權聲明
```
// +----------------------------------------------------------------------
// | Company Name xx服務
// +----------------------------------------------------------------------
// | Copyright (c) 2017 http://domain All rights reserved.
// +----------------------------------------------------------------------
// | Author: name <email>
// +----------------------------------------------------------------------
```
PHP編碼規範建議學習