PHP-FIG:PSRphp
PSR基本規範中文翻譯html
全局變量以g_開頭git
變量使用駝峯式,deleteArticlegithub
常量中全部字母都必須大寫,詞間如下劃線分隔。UESTC_ROOT數組
類名應以大寫字母開頭,每一個單詞的首字母大寫。ActionController安全
是數組的變量,在最後必需要使用List或者Array變量註明。valueList框架
源碼文件必須採用UTF-8編碼,且不得有BOM頭ide
縮進採用soft tab,使用4個空格函數
全部的全局變量應該寫在函數的最開頭,而且和後面的代碼以空行隔開codeigniter
對於函數返回值的判斷,特別是true/false, 必須用===或!==
字符串儘可能用’ ‘而不是」 「進行引用,一個是效率問題,一個是安全問題
if/while等結構體,即便只有一行,也必須加上花括號,不得寫成一行
一個函數不得超過300行,建議控制在100行之內。
數組使用[] 不要使用array() 。初始化array若是採用多行結構時,數據項部分須要縮進,且最後一個數據項後面的逗號不可省略,這是爲了後續便於添加
$a=[ 'a'=>1, 'b'=>2, ];
除模板外,不容許使用?>標記結尾, 避免其後誤加的字符干擾頁面渲染
類的開始花括號 { 必須寫在其聲明後自成一行,結束花括號 } 也必須寫在其主體後自成一行。
方法的開始花括號 { 必須寫在函數聲明後自成一行,結束花括號 } 也必須寫在函數主體後自成一行。
class Add { final public static function getApple() { } }
類的屬性和方法必須添加訪問修飾符(private、protected 以及 public), abstract 以及 final 必須聲明在訪問修飾符以前,而 static 必須聲明在訪問修飾符以後。每一個類的屬性也必須添加訪問修飾符。
常量 true 、false 和 null 必須所有小寫。
參數列表中,每一個逗號後面必須要有一個空格,而逗號前面必定不能有空格。
其餘示例
<?php if ($expr1) { // if body } elseif ($expr2) { // elseif body } else { // else body; } switch ($expr) { case 0: echo 'First case, with a break'; break; case 1: echo 'Second case, which falls through'; // no break case 2: case 3: case 4: echo 'Third case, return instead of break'; return; default: echo 'Default case'; break; } while ($expr) { // structure body } do { // structure body; } while ($expr); for ($i = 0; $i < 10; $i++) { // for body } try { // try body } catch (OtherExceptionType $e) { // catch body }
減小if/else嵌套, 更利於代碼邏輯的理解。
不建議的方式(最好不要採用,而且條件中代碼塊超過10行的不得采用本方式): if (a === false) { // error handle } else { if (b === false) { // handle } } 推薦的方式: if (a === false) { // error handle } if (b === false) { // handle }
全部文件路徑都須要利用框架提供的宏寫成絕對路徑
文件更新操做,必須使用臨時文件+mv的方式,切忌直接寫在原文件
錯誤碼使用統一文件集中配置,而且使用常量,而不該裸寫數字
把重複調用放在循環體外。
不推薦形式: for($i = 0; $i < count($arr); $i++) 推薦形式: $arrCount = count($arr); for($i = 0; $i < $arrCount; $i++
參考如下兩個示例
<?php /** * file summary. * @version 1.1.1 */ /** * A summary informing the user what the associated element does 函數總結 * * A *description*, that can span multiple lines, to go _in-depth_ into the details of this element * and to provide some background information or textual references 較詳細的描述 * * @author XXX * @param string $var1 With a *description* of this argument, these may also * span multiple lines * @param string(類型) $var2(名稱) 參數2的描述 * @return void */ function myFunction($var1,$var2) { } /** * summary for this function * * @deprecated 1.0.0 No longer used by internal code and not recommended(對於之後將被移除或廢棄的函數須要註明). * @todo remove this function 之後要作的事情 * @return void */ function dead() { }
類的示例
<?php /** * CodeIgniter * * @author EllisLab Dev Team * @license http://opensource.org/licenses/MIT MIT License * @link https://codeigniter.com * @since Version 1.0.0 */ /** * Zip Compression Class * * This class is based on a library I found at Zend: * http://www.zend.com/codex.php?id=696&single=1 * * The original library is a little rough around the edges so I * refactored it and added several additional methods -- Rick Ellis * * @package CodeIgniter * @subpackage Libraries * @category Encryption * @author EllisLab Dev Team * @link https://codeigniter.com/user_guide/libraries/zip.html */ class CI_Zip { /** * Zip data in string form * * @var string */ public $zipdata = ''; /** * Initialize zip compression class * * @return void */ public function __construct() { //...... } /** * Add Directory * * Lets you add a virtual directory into which you can place files. * * @param mixed $directory the directory name. Can be string or array * @return void */ public function add_dir($directory) { //。。。。。 } }