成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP - 編碼規(guī)范 v1.0

NickZhou / 1049人閱讀

摘要:所以在末尾不加可以預(yù)防文件被惡意加入字符輸出到網(wǎng)頁。它是一種注釋代碼的正式標(biāo)準(zhǔn)。

一、 命名規(guī)則 1. 命名規(guī)則概要

1) 使用含義豐富的名字

# good
if ($currentYear > 2009) ...

# bad
if($t > 2009) ...    

2) 在縮寫中,只將首字母大寫

# good
function getHttpHost()

#bad
function getHTTPHost()    
2. 類命名

1) 類應(yīng)該以名詞單數(shù)形式, 首字母大寫, 大小寫混排,方式命名

class SqlStatement {    ...    }

2) 表示一組事物的類應(yīng)使用復(fù)數(shù)形式

class SqlStatements {    ...    } 

3) 類型開頭要比以類型結(jié)尾更容易識(shí)別
對一個(gè)已知類型的變量來說, 其名稱以類型開頭要比以類型結(jié)尾更容易識(shí)別

class ErrorConnection extends Error {
    // ...    
}     

$arrCatids = array(1,2,3,4,5,6);
$strCatids = ‘1,2,3,4,5,6’; 

4) 接口的默認(rèn)實(shí)現(xiàn)類可以以Default開頭

class DefaultSqlBuilder extends ISqlBuilder {
    //...    
} 
3. 接口命名

接口的名字應(yīng)為以字母”I”開頭的名詞或形容詞

interface ISqlEngine{}    interface ISortable{}
4. 變量/屬性命名

1) 屬性名應(yīng)以小寫字母開頭, 采用駝峰法則.

public $userAuth;

3) 常量的名字必須全部為大寫字母
所有字母大寫,單詞之間用下劃線分割

const SEARCH_GOOGLE = 1;    
const SEARCH_YAHOO  = 2;

4) 命名一組對象時(shí),應(yīng)使用復(fù)數(shù)形式

public $books;

5) 布爾型變量不應(yīng)使用否定性名字

# good
public $isFound;    
public $isEnough;

# bad
public $isNotFound;    
public $isNotEnough;

6) 在嵌套循環(huán)中,使用有意義豐富的名字來命名循環(huán)控制變量

# 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) 傳入的變量采用蛇形寫法, 自定義函數(shù)變量采用蛇形寫法

# 控制器變量
class UserController extends Controller{
    function postLogin(Request $request) {
        // 這里是蛇形寫法
        $order_status = $request->input("order_status");
    }
}

# 自定義函數(shù)變量
# 這里傳入的變量采用蛇形寫法
function route_url($route, $params, $option_params){
    // ...
}
5. 函數(shù)命名

禁止拼音命名法

1) 類函數(shù)名稱以小寫字母開頭, 采用駝峰法則

function getCurrentYear()

2) 用動(dòng)詞命名函數(shù)

# 動(dòng)詞表:
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) 函數(shù)名字可以忽略類或?qū)ο竺Q,以避免重復(fù)

# good
class Font {
    function getFamily();
}

# bad
class Font {    
    function getFontFamily();
}

4) 單例類應(yīng)該通過一個(gè)名為getInstance()的靜態(tài)函數(shù)返回他們唯一的值

class Toolkit {    
    private static const toolkit = new Toolkit();
    public static function getInstance(){
        return toolkit; 
    }    
} 
二、 文件格式/ 技巧 1. 留白

恰當(dāng)?shù)氖褂每崭窨梢杂行岣叽a的可讀性

1) 使用空格的通用規(guī)則

操作符,冒號(hào)的前后都應(yīng)有一個(gè)空格.

逗號(hào),分號(hào)之后須有一個(gè)空格

# 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) 邏輯單元應(yīng)該以空行分割

function drawCapture() {    
    $chars = getChars(5);
    
    // imageCreate
    $img = imageCreate();
    
    // output image
    outputImage();    
} 
2. 控制流程

1) for,while,if語句格式如下

# for
for (init; condition; update) {    
    // ...    
} 

# while
while (condition) {    
    // ...    
} 

# if
if (condition) {
    // ...    
} else if (condition) {    
    // ...    
} else {
    // ...    
} 

2) 循環(huán)/條件語句必須以 ‘{‘ , ’}’嵌套

# 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) 使用臨時(shí)變量以避免復(fù)合條件語句

# good
$itemValid = $itemMoney > 800 && $level > 3 && $valid > 0;
if($itemValid && isReady()) {
    display();    
}

# bad
if($itemMoney > 800 && $level > 3 && $valid > 0 && isReady()) {    
    display();    
}

4) Switches 語句應(yīng)該套用以下格式,并且每個(gè)分支必須注釋清楚

switch (condition) {
    case 0:            
    // show something
        break;    
    default:
    // this is some code
}
3. 聲明

1) 類/接口聲明順序
類文檔中的語句的順序.

1.    文檔/注釋
2.    類/接口語句
3.    常量
4.    靜態(tài)變量順序:[public, protected, (default), private]
5.    實(shí)例變量順序:[public, protected, (default), private]
6.    構(gòu)造函數(shù) __construct();
7.    函數(shù) function;

2) 變量的聲明要在代碼塊的開頭,而不是在用到它們的地方

public function method() {
    $value = 0;
    ...    
    for (...) {    
        $value += $num;    
    }    
} 
4. 技巧

刪除文件尾部的 ?>

php文件的典型標(biāo)記是以 結(jié)尾。但是在Zend Framework中卻不推薦在php文件末尾加 ?>
因?yàn)樵??php ?>之外的任何字符都會(huì)被輸出到網(wǎng)頁上,而之中的卻不會(huì)。所以在末尾不加?>可以預(yù)防php文件被惡意加入字符輸出到網(wǎng)頁。

數(shù)組的鍵名

在PHP中, 使用不經(jīng)單引號(hào)包含的字符串作為數(shù)組鍵名是合法的, 但是我們不希望如此 -- 鍵名應(yīng)該總是由單引號(hào)包含而避免引起混淆. 注意這是使用一個(gè)字符串, 而不是使用變量做鍵名的情況

// 錯(cuò)誤    
$foo = $assoc_array[blah];
// 正確
$foo = $assoc_array["blah"];
// 錯(cuò)誤
$foo = $assoc_array["$var"];
// 正確    
$foo = $assoc_array[$var]; 

不要使用未初始化的變量

// 錯(cuò)誤    
if ($forum) ...
// 正確
if (isset($forum)) ...
// 正確    
if (isset($forum) && $forum == 5) 

避免在大數(shù)組上使用 in_array()

避免在大的數(shù)組上使用 in_array(), 同時(shí)避免在循環(huán)中對包含200個(gè)以上元素的數(shù)組使用這個(gè)函數(shù). in_array()會(huì)非常消耗資源. 對于小的數(shù)組這種影響可能很小, 但是在一個(gè)循環(huán)中檢查大數(shù)組可能會(huì)需要好幾秒鐘的時(shí)間. 如果您確實(shí)需要這個(gè)功能, 請使用isset()來查找數(shù)組元素. 實(shí)際上是使用鍵名來查詢鍵值. 調(diào)用 isset($array[$var]) 會(huì)比 in_array($var, array_keys($array)) 要快得多.

SQL 腳本格式

SQL 代碼常常會(huì)變得很長, 如果不作一定的格式規(guī)范, 將很難讀懂. SQL代碼一般按照以下的格式書寫, 以關(guān)鍵字換行:

$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"; 

這里是應(yīng)用了制表符後的例子:

$sql = "SELECT *
    FROM " . SOME_TABLE . " 
    WHERE a = 1 
        AND (b = 2 
            OR b = 3)        
    ORDER BY b";     

禁止使用單字母開頭的變量

$tKey, $tVal
5. 空行的使用

兩個(gè)函數(shù)之間必須有1個(gè)空行。

return、die、exit之前如果有其他語句的情況下應(yīng)加上一個(gè)空行

三、 文檔與注釋 1. PHPDoc

PHPDoc 是一個(gè) PHP 版的 Javadoc。它是一種注釋 PHP 代碼的正式標(biāo)準(zhǔn)。它支持通過類似 phpDocumentor 這樣的外部文檔生成器生成 API 文檔,也可以幫助一些例如 Zend Studio, NetBeans, ActiveState Komodo Edit and IDE 和 Aptana Studio 之類的 集成開發(fā)環(huán)境 理解變量類型和弱類型語言中的其他歧義并提供改進(jìn)的代碼完成,類型提示和除錯(cuò)功能。
參考地址: http://zh.wikipedia.org/zh/PH...

2. 注釋

注釋類

/**
 * 這是某個(gè)類的介紹
 */    
class SomeClass{}

注釋局部變量

function someFunction(){    
    var $result;          //獲取到的結(jié)果集
    var $searchResult;   //獲取到的搜索結(jié)果集    
    // ...
}

注釋變量

/** @var name string */
public $name 

注釋函數(shù)
注釋的標(biāo)記應(yīng)按照以下順序

*     @param
*     @return
*     @see
3. PHP文檔頭部注釋
/**
?* 文件頭部說明
?* 
?* @author ? ? Mark ([email protected])
?* @copyright ?Copyright (c) 2014-2016 sour-lemon team
?*/
框架常用命名 控制器方法
getIndex()     # 列表
getCreate()    # 創(chuàng)建
postCreate()   # 保存創(chuàng)建
getEdit()      # 編輯
postEdit()     # 保存編輯
postUpdate()   # 批量更新
postDelete()   # 刪除到回收站
postDestroy()  # 徹底刪除
附錄Appendices 附錄A:參考文檔

PHPBB 編碼規(guī)范
http://www.phpbbchina.com/wik...編碼規(guī)范

Typecho PHP 編碼規(guī)范
https://code.google.com/p/typ...

優(yōu)化編寫代碼過程中的PHP
http://www.yeeyan.org/article...

附錄B:PHPDoc 標(biāo)簽參考

在線版地址 : 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     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.
附錄C: 版本變化 v1.4(2016年10月07日)

更改為markdown格式, 并且將其替換為Laravel 編碼格式

V1.3(2015年4月19日)

項(xiàng)目文件結(jié)構(gòu)說明

V1.2(2013年4月27日)

分離項(xiàng)目公共部分

V1.1(2013年4月2日)

增加左格式化內(nèi)容
增加刪除 ?> 標(biāo)記

V1.0(2012年11月7日)

初始化規(guī)范

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/25723.html

相關(guān)文章

  • 基于PSR-0編碼規(guī)范開發(fā)一套PHP-MVC框架(二)

    摘要:框架采用編碼規(guī)范開發(fā)的一套框架,純面向?qū)ο箝_發(fā),依賴包管理模版引擎數(shù)據(jù)庫類錯(cuò)誤輸出等在項(xiàng)目根目錄下使用命令執(zhí)行安裝插件二入口文件。引入文件,開啟錯(cuò)誤提示插件三數(shù)據(jù)庫配置文件。視圖模版不存在七控制器操作數(shù)據(jù)并顯示到頁面。 一、composer依賴包管理工具。composer.json { name:PHP-FRAME, author:Guoming.Zhang, ...

    graf 評論0 收藏0
  • Web安全開發(fā)規(guī)范手冊V1.0

    摘要:一背景團(tuán)隊(duì)最近頻繁遭受網(wǎng)絡(luò)攻擊,引起了技術(shù)負(fù)責(zé)人的重視,筆者在團(tuán)隊(duì)中相對來說更懂安全,因此花了點(diǎn)時(shí)間編輯了一份安全開發(fā)自檢清單,覺得應(yīng)該也有不少讀者有需要,所以將其分享出來。 一、背景 團(tuán)隊(duì)最近頻繁遭受網(wǎng)絡(luò)攻擊,引起了技術(shù)負(fù)責(zé)人的重視,筆者在團(tuán)隊(duì)中相對來說更懂安全,因此花了點(diǎn)時(shí)間編輯了一份安全開發(fā)自檢清單,覺得應(yīng)該也有不少讀者有需要,所以將其分享出來。 二、編碼安全 2.1 輸入驗(yàn)證 ...

    Yuqi 評論0 收藏0
  • Web安全開發(fā)規(guī)范手冊V1.0

    摘要:一背景團(tuán)隊(duì)最近頻繁遭受網(wǎng)絡(luò)攻擊,引起了技術(shù)負(fù)責(zé)人的重視,筆者在團(tuán)隊(duì)中相對來說更懂安全,因此花了點(diǎn)時(shí)間編輯了一份安全開發(fā)自檢清單,覺得應(yīng)該也有不少讀者有需要,所以將其分享出來。 一、背景 團(tuán)隊(duì)最近頻繁遭受網(wǎng)絡(luò)攻擊,引起了技術(shù)負(fù)責(zé)人的重視,筆者在團(tuán)隊(duì)中相對來說更懂安全,因此花了點(diǎn)時(shí)間編輯了一份安全開發(fā)自檢清單,覺得應(yīng)該也有不少讀者有需要,所以將其分享出來。 二、編碼安全 2.1 輸入驗(yàn)證 ...

    Ryan_Li 評論0 收藏0
  • imi v1.0 正式版,專注單體應(yīng)用的 PHP 協(xié)程應(yīng)用開發(fā)框架

    摘要:年開發(fā)并發(fā)布框架現(xiàn)已停止維護(hù)。經(jīng)過一年實(shí)戰(zhàn),年月日,一周年之際正式發(fā)布版本。宇潤部分開源項(xiàng)目我已通過碼云平臺(tái),向項(xiàng)目力所能及地捐款,聊表心意。所以,目前主打的還是單體應(yīng)用開發(fā)。協(xié)議的開發(fā),也是帶來的一大優(yōu)勢。 imi 介紹 showImg(https://segmentfault.com/img/bVbuab9?w=291&h=187); imi 是基于 PHP 協(xié)程應(yīng)用開發(fā)框架,它支...

    genefy 評論0 收藏0
  • PHP 標(biāo)準(zhǔn)規(guī)范

    摘要:標(biāo)準(zhǔn)規(guī)范簡介是的簡寫,由組織制定的規(guī)范,是開發(fā)的實(shí)踐標(biāo)準(zhǔn)。具體標(biāo)準(zhǔn)有有了統(tǒng)一編碼風(fēng)格規(guī)范,更有利于查看和學(xué)習(xí)各個(gè)框架或類庫,不不需要每次都適應(yīng)新的編碼風(fēng)格。同時(shí)在開發(fā)團(tuán)隊(duì)內(nèi)部使用統(tǒng)一的編碼規(guī)范更有利于代碼審查版本控制團(tuán)隊(duì)內(nèi)部交流。 PHP 標(biāo)準(zhǔn)規(guī)范 PSR PSR 簡介 PSR 是 PHP Standard Recommendations 的簡寫,由 PHP FIG 組織制定的 PHP...

    FuisonDesign 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<