###php編碼規範php
-------
* sql過長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等控制結構條件過長api
```
if ($a > 0
&& $b > 0
&& $c > 0
&& $d > 0
&& $e > 0) {數組
}
```
* 方法或函數參數大於三個換行dom
```
public function tooLangFunction(
$valueOne = '',
$valueTwo = '',
$valueThree = '',
$valueFour = '',
$valueFive = '',
$valueSix = '')
{
//coding...
}
```
* 鏈式操做超過兩個函數
```
$this->nameTest->functionOne()
->functionTwo()
->functionThree();
``` 測試
* 方法(類/trait中)名稱必須符合 camelCase 式的小寫開頭駝峯命名規範。this
```
class StudlyCaps
{
public function studlyCaps()
{
// coding...
}
}
```編碼
* 函數名稱必須符合 snake_case 式的下劃線式命名規範。spa
```
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>// +----------------------------------------------------------------------```