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