1) 使用含義豐富的名字php
# good if ($currentYear > 2009) ... # bad if($t > 2009) ...
2) 在縮寫中,只將首字母大寫html
# good function getHttpHost() #bad function getHTTPHost()
1) 類應該以名詞單數形式, 首字母大寫, 大小寫混排,方式命名mysql
class SqlStatement { ... }
2) 表示一組事物的類應使用複數形式sql
class SqlStatements { ... }
3) 類型開頭要比以類型結尾更容易識別
對一個已知類型的變量來講, 其名稱以類型開頭要比以類型結尾更容易識別數組
class ErrorConnection extends Error { // ... } $arrCatids = array(1,2,3,4,5,6); $strCatids = ‘1,2,3,4,5,6’;
4) 接口的默認實現類能夠以Default開頭markdown
class DefaultSqlBuilder extends ISqlBuilder { //... }
接口的名字應爲以字母」I」開頭的名詞或形容詞框架
interface ISqlEngine{} interface ISortable{}
1) 屬性名應以小寫字母開頭, 採用駝峯法則.ide
public $userAuth;
3) 常量的名字必須所有爲大寫字母
全部字母大寫,單詞之間用下劃線分割函數
const SEARCH_GOOGLE = 1; const SEARCH_YAHOO = 2;
4) 命名一組對象時,應使用複數形式typecho
public $books;
5) 布爾型變量不該使用否認性名字
# good public $isFound; public $isEnough; # bad public $isNotFound; public $isNotEnough;
6) 在嵌套循環中,使用有意義豐富的名字來命名循環控制變量
# good for($row = 0; $i < getRows();$row++) { for($col= 0;$j < getCols(); $col++) { // ... } } # bad for($i = 0; $i < getRows();$i++) { for($j= 0;$j < getCols(); $j++){ // ... } }
7) 傳入的變量採用蛇形寫法, 自定義函數變量採用蛇形寫法
# 控制器變量 class UserController extends Controller{ function postLogin(Request $request) { // 這裏是蛇形寫法 $order_status = $request->input('order_status'); } } # 自定義函數變量 # 這裏傳入的變量採用蛇形寫法 function route_url($route, $params, $option_params){ // ... }
禁止拼音命名法
1) 類函數名稱以小寫字母開頭, 採用駝峯法則
function getCurrentYear()
2) 用動詞命名函數
# 動詞表: add / edit / remove begin / end create / destroy first / last get / release get / set increment / decrement put / get lock / unlock open / close min / max old / new start / stop next / previous source / target show / hide send / receive cut / paste up / down # 系詞表: is / has
function startDatabase() function getDatabaseStatus()
3) 函數名字能夠忽略類或對象名稱,以免重複
# good class Font { function getFamily(); } # bad class Font { function getFontFamily(); }
4) 單例類應該經過一個名爲getInstance()的靜態函數返回他們惟一的值
class Toolkit { private static const toolkit = new Toolkit(); public static function getInstance(){ return toolkit; } }
恰當的使用空格能夠有效提升代碼的可讀性
1) 使用空格的通用規則
操做符,冒號的先後都應有一個空格.
逗號,分號以後須有一個空格
# good $bit = $bitStart + $bitEnd; case 'someStr' : mysqlConnection($config, $dbname); if($count > 9) #bad $bit=$bitStart+$bitEnd; case 'someStr': mysqlConnection($config,$dbname); if($count>9)
2) 邏輯單元應該以空行分割
function drawCapture() { $chars = getChars(5); // imageCreate $img = imageCreate(); // output image outputImage(); }
1) for,while,if語句格式以下
# for for (init; condition; update) { // ... } # while while (condition) { // ... } # if if (condition) { // ... } else if (condition) { // ... } else { // ... }
2) 循環/條件語句必須以 ‘{‘ , ’}’嵌套
# good if ($i > 0) { $val ++; } for ($i = 0; $i < $size; $i++) { $val ++; } # bad for($i=0; $i<$size; $i++) $val ++; if($i > 0) $val ++;
3) 使用臨時變量以免複合條件語句
# good $itemValid = $itemMoney > 800 && $level > 3 && $valid > 0; if($itemValid && isReady()) { display(); } # bad if($itemMoney > 800 && $level > 3 && $valid > 0 && isReady()) { display(); }
4) Switches 語句應該套用如下格式,而且每一個分支必須註釋清楚
switch (condition) { case 0: // show something break; default: // this is some code }
1) 類/接口聲明順序
類文檔中的語句的順序.
1. 文檔/註釋 2. 類/接口語句 3. 常量 4. 靜態變量順序:[public, protected, (default), private] 5. 實例變量順序:[public, protected, (default), private] 6. 構造函數 __construct(); 7. 函數 function;
2) 變量的聲明要在代碼塊的開頭,而不是在用到它們的地方
public function method() { $value = 0; ... for (...) { $value += $num; } }
刪除文件尾部的 ?>
php文件的典型標記是以 <?php開頭, ?>結尾。可是在Zend Framework中卻不推薦在php文件末尾加 ?>
由於在<?php ?>以外的任何字符都會被輸出到網頁上,而之中的卻不會。因此在末尾不加?>能夠預防php文件被惡意加入字符輸出到網頁。
數組的鍵名
在PHP中, 使用不經單引號包含的字符串做爲數組鍵名是合法的, 可是咱們不但願如此 -- 鍵名應該老是由單引號包含而避免引發混淆. 注意這是使用一個字符串, 而不是使用變量作鍵名的狀況
// 錯誤 $foo = $assoc_array[blah]; // 正確 $foo = $assoc_array['blah']; // 錯誤 $foo = $assoc_array["$var"]; // 正確 $foo = $assoc_array[$var];
不要使用未初始化的變量
// 錯誤 if ($forum) ... // 正確 if (isset($forum)) ... // 正確 if (isset($forum) && $forum == 5)
避免在大數組上使用 in_array()
避免在大的數組上使用 in_array(), 同時避免在循環中對包含200個以上元素的數組使用這個函數. in_array()會很是消耗資源. 對於小的數組這種影響可能很小, 可是在一個循環中檢查大數組可能會須要好幾秒鐘的時間. 若是您確實須要這個功能, 請使用isset()來查找數組元素. 其實是使用鍵名來查詢鍵值. 調用 isset($array[$var])
會比 in_array($var, array_keys($array))
要快得多.
SQL 腳本格式
SQL 代碼經常會變得很長, 若是不做必定的格式規範, 將很難讀懂. SQL代碼通常按照如下的格式書寫, 以關鍵字換行:
$sql = 'SELECT * <-one tab->FROM ' . SOME_TABLE . ' <-one tab->WHERE a = 1 <-two tabs->AND (b = 2 <-three tabs->OR b = 3) <-one tab->ORDER BY b';
這裏是應用了製表符後的例子:
$sql = 'SELECT * FROM ' . SOME_TABLE . ' WHERE a = 1 AND (b = 2 OR b = 3) ORDER BY b';
禁止使用單字母開頭的變量
$tKey, $tVal
<?php 以後必須有1個空行
兩個函數之間必須有1個空行。
return、die、exit以前若是有其餘語句的狀況下應加上一個空行
PHPDoc 是一個 PHP 版的 Javadoc。它是一種註釋 PHP 代碼的正式標準。它支持經過相似 phpDocumentor 這樣的外部文檔生成器生成 API 文檔,也能夠幫助一些例如 Zend Studio, NetBeans, ActiveState Komodo Edit and IDE 和 Aptana Studio 之類的 集成開發環境 理解變量類型和弱類型語言中的其餘歧義並提供改進的代碼完成,類型提示和除錯功能。
參考地址: http://zh.wikipedia.org/zh/PH...
註釋類
/** * 這是某個類的介紹 */ class SomeClass{}
註釋局部變量
function someFunction(){ var $result; //獲取到的結果集 var $searchResult; //獲取到的搜索結果集 // ... }
註釋變量
/** @var name string */ public $name
註釋函數
註釋的標記應按照如下順序
* @param * @return * @see
/** * 文件頭部說明 * * @author Mark (zhaody901@126.com) * @copyright Copyright (c) 2014-2016 sour-lemon team */
getIndex() # 列表 getCreate() # 建立 postCreate() # 保存建立 getEdit() # 編輯 postEdit() # 保存編輯 postUpdate() # 批量更新 postDelete() # 刪除到回收站 postDestroy() # 完全刪除
PHPBB 編碼規範
http://www.phpbbchina.com/wik...編碼規範
Typecho PHP 編碼規範
https://code.google.com/p/typ...
優化編寫代碼過程當中的PHP
http://www.yeeyan.org/article...
在線版地址 : http://manual.phpdoc.org/HTML...
@abstract Documents an abstract class, class variable or method. @access public, private or protected Documents access control for an element. @access private indicates that documentation of element be prevented. @author author name <author@email> Documents the author of the current element. @category Specify a category to organize the documented element’s package into @copyright name date Documents copyright information. @deprecated version Documents a method as deprecated. @example /path/to/example Documents the location of an external saved example file. @exception documents an exception thrown by a method — also see @throws. @global type $globalvarname Documents a global variable or its use in a function or method. @ignore Prevents the documentation of an element @internal private information for advanced developers @link URL @name global variable name Specifies an alias for a variable. For example, $GLOBALS[‘myvariable’] becomes $myvariable @magic phpDocumentor tags}-. @package name of a package Documents a group of related classes and functions. @param type [$varname] description @return type description This tag should not be used for constructors or methods defined with a void return type. @see Documents an association to another method or class. @since version Documents when a method was added to a class. @static Documents a static class or method @staticvar Documents a static variable’s use in a function or class @subpackage @throws Documents an exception thrown by a method. @todo Documents things that need to be done to the code at a later date. @var type a data type for a class variable @version Provides the version number of a class or method.
更改成markdown格式, 而且將其替換爲Laravel 編碼格式
項目文件結構說明
分離項目公共部分
增長左格式化內容
增長刪除 ?>
標記
初始化規範