WIKI使用導(dǎo)航
站長(zhǎng)百科導(dǎo)航
站長(zhǎng)專題
- 網(wǎng)站推廣
- 網(wǎng)站程序
- 網(wǎng)站賺錢
- 虛擬主機(jī)
- cPanel
- 網(wǎng)址導(dǎo)航專題
- 云計(jì)算
- 微博營(yíng)銷
- 虛擬主機(jī)管理系統(tǒng)
- 開(kāi)放平臺(tái)
- WIKI程序與應(yīng)用
- 美國(guó)十大主機(jī)
WordPress:WordPress Coding Standards
來(lái)自站長(zhǎng)百科
導(dǎo)航: 上一級(jí) | WordPress | 首頁(yè) | WordPress中文論壇 | WordPress主機(jī) | CMS程序 | 論壇程序 | ECShop | ShopNC | PowerEasy
一些WordPress代碼結(jié)構(gòu)遺留下來(lái)的部分對(duì)于PHP的開(kāi)發(fā)在類型上是不一致的。 WordPress致力于通過(guò)幫助用戶維護(hù)代碼一致性,維持整潔易讀的程度來(lái)逐漸改變這點(diǎn)。
編寫WordPress 代碼的時(shí)候,要記得以下幾點(diǎn),不論是核心程序代碼, 插件,或者是 WordPress 主題。指導(dǎo)方針與 Pear 標(biāo)準(zhǔn)相似,但是在某些關(guān)鍵地方也有不同。
也可以參見(jiàn)wp-hackers 列表中的這個(gè)文章
還有一篇關(guān)于被提議的內(nèi)嵌文檔標(biāo)準(zhǔn)的頁(yè)面.
- 單引號(hào)和雙引號(hào)
- 適當(dāng)?shù)臅r(shí)候使用單引號(hào)和雙引號(hào)。如果你不能評(píng)測(cè)字符串中的東西的時(shí)候,使用單引號(hào)。字符串無(wú)法擺脫HTML 引號(hào),因?yàn)槟阒豢梢愿淖兡愕囊梅绞?,?
echo "<a href='$link' title='$linktitle'>$linkname</a>"; echo '<a href="/static/link" title="Yeah yeah!">Link name</a>';
- 唯一的例外是JavaScript,它有時(shí)要求雙或者單引號(hào)。屬性中的文本必須通過(guò)attribute_escape()處理,這樣單或者雙引號(hào)不需要結(jié)束屬性的值,也不會(huì)導(dǎo)致XHTML 不合法而導(dǎo)致安全問(wèn)題。
- 縮進(jìn)
- 縮進(jìn)通常反映出邏輯結(jié)構(gòu)。使用真正的制表符 而不要使用空格,這通過(guò)客戶端允許得到最大的適應(yīng)性。
- 例外: 如果代碼排列整齊了會(huì)使你的代碼塊更易讀的話,你可以做一些簡(jiǎn)單的制表符縮進(jìn),然后把不同的地方用空格標(biāo)記:
[tab]$foo = 'somevalue'; [tab]$foo2 = 'somevalue2'; [tab]$foo34 = 'somevalue3'; [tab]$foo5 = 'somevalue4';
- 注意制表符如何用來(lái)做簡(jiǎn)單的縮進(jìn),和空格只是用來(lái)讓每行排列整齊。
- Brace 格式
- Brace應(yīng)該用于多行代碼塊:
if ( condition ) { action1(); action2(); } elseif ( condition2 && condition3 ) { action3(); action4(); } else { defaultaction(); }
- 此外如果你有特別長(zhǎng)的代碼塊,考慮是否可以分成兩個(gè)或者更多的短些的塊或者函數(shù)。如果你認(rèn)為這種長(zhǎng)代碼不可避免,請(qǐng)?jiān)谀┪沧鲆粋€(gè)簡(jiǎn)單的注釋,這樣人們可以在看過(guò)之后知道結(jié)束括號(hào)結(jié)束了什么。 -- 尤其是適合邏輯塊,超過(guò)35行的代碼,當(dāng)然任何代碼都是可以做出注釋的。
- 單行程序塊可以省略大括號(hào):
if ( condition ) action1(); elseif ( condition2 ) action2(); else action3();
- include_once vs. require_once
- 了解 include_once 和 require_once之間的不同,適當(dāng)?shù)氖褂盟鼈儭R?a target="_blank" rel="nofollow noreferrer noopener" class="external autonumber" 這兩種結(jié)構(gòu)除了在如何處理故障方面,其他的都是一樣的。當(dāng)require() 導(dǎo)致一個(gè)致命錯(cuò)誤的時(shí)候,include() 生成一個(gè)警告。" 致命錯(cuò)誤停止代碼執(zhí)行。
- 常規(guī)表達(dá)
- Perl 兼容常規(guī)表達(dá)(PCRE, preg_ 函數(shù))應(yīng)該被優(yōu)先用在 它們的POSIX 副本.
- 不要使用簡(jiǎn)寫PHP
- 不要使用簡(jiǎn)寫PHP 開(kāi)始標(biāo)簽 (<? ... ?> 或者 <?=$var?>)。要一直使用完全的PHP 標(biāo)簽 (<?php ... ?>). 確認(rèn)關(guān)閉PHP標(biāo)簽后移除空白空格。
- 空格用法
- 在逗號(hào)后面要加一個(gè)空格,在邏輯和分配算子兩邊也要加上空格如 "x == 23", "foo && bar", "array( 1, 2, 3 )", , 同樣在打開(kāi)和關(guān)閉if, elseif, foreach, for 和 switch 語(yǔ)句的括號(hào)兩邊也加上空格 (如foreach ( $foo as $bar ) { ...). 定義一個(gè)函數(shù)的時(shí)候,這樣做: function myfunction( $param1 = 'foo', $param2 = 'bar' ) { 在調(diào)用函數(shù)的時(shí)候,這樣做: myfunction( $param1, funcparam( $param2 ) );
- 格式化 SQL 聲明
- 如果十分復(fù)雜而不能辨別的話,當(dāng)格式化SQL聲明的時(shí)候你可以把它分成幾行,然后縮進(jìn)。多數(shù)聲明在一行內(nèi)運(yùn)行良好。聲明的SQL部分如UPDATE 或者 WHERE一定要大寫。
- 升級(jí)數(shù)據(jù)庫(kù)的函數(shù)盡量減少參數(shù)應(yīng)該盼望參數(shù)在傳遞過(guò)程中減少丟失。溢出應(yīng)該在盡可能接近請(qǐng)求的時(shí)候完成。最適合的時(shí)候是正在使用 $wpdb->prepare()時(shí)。
- $wpdb->prepare()是一個(gè)方法,為SQL請(qǐng)求控制溢出,引用和int-casting。它使用一個(gè)格式化的sprintf()格式的的子集。如 :
$var = "dangerous'"; // raw data that may or may not need to be escaped $id = some_foo_number(); // data we expect to be an integer, but we're not certain $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts SET post_title = %s WHERE ID = %d", $var, $id ) );
- %s 是用于字符串占位符的,%d是用于整型占位符。注意它們沒(méi)有被'引用'! $wpdb->prepare()會(huì)照應(yīng)好溢出和引用的。這樣的好處就是我們不需要記住手動(dòng)使用$wpdb->escape(),這樣一眼就能看出是否有什么溢出,因?yàn)樗谡?qǐng)求發(fā)生的那一刻就起作用了。
- 數(shù)據(jù)庫(kù)請(qǐng)求
- 避免直接改動(dòng)數(shù)據(jù)庫(kù)。如果有一個(gè)定義過(guò)的函數(shù)可以得到你想要的數(shù)據(jù),就用它,數(shù)據(jù)庫(kù)提取(使用函數(shù)代替請(qǐng)求)對(duì)保證你的代碼的向前兼容性有幫助,這樣結(jié)果在內(nèi)存中找到后,它可以用數(shù)倍更快的速度。如果你必須改動(dòng)數(shù)據(jù)庫(kù)的話,通過(guò)發(fā)布信息到wp-hackers 郵件列表聯(lián)系幾個(gè)開(kāi)發(fā)人員。他們可能會(huì)考慮為下一個(gè)WordPress 版本開(kāi)發(fā)一個(gè)新的函數(shù)來(lái)達(dá)到你想要的功能。
- 變量, 函數(shù)和算子
- 如果你不使用變量,就不要?jiǎng)?chuàng)建。這包括請(qǐng)求在內(nèi)。于數(shù)據(jù)庫(kù)交換數(shù)據(jù)時(shí)使用函數(shù)wpdb類。
- 三重算子是可以的,聲明為真時(shí)要記得測(cè)試,否則它會(huì)混淆。
// GOOD example: // (if statement is true) ? (do this) : (if false, do this); $musictype = ('jazz' == $music) ? 'cool' : 'blah';
- 另外一個(gè)重點(diǎn)是在上邊的例子中,當(dāng)做邏輯比較的時(shí)候,要把變量放到右邊,象上邊那樣。如果你忘記了等號(hào),它會(huì)出現(xiàn)一個(gè)解析錯(cuò)誤而不是判斷為真或者停止聲明。它并不占用過(guò)多的時(shí)間,所以這如果避免了一個(gè)錯(cuò)誤,是值得的。
:?jiǎn)为?dú)行為了簡(jiǎn)潔省略括號(hào)
if ( condition ) action1(); elseif ( condition2 ) action2(); else action3();