Zend Framework 中的 Php 編碼通訊協定 (一) – 檔案格式

來源:互聯網
上載者:User

原文 : http://kbs.kimbs.cn/blog/list/post/22/title/zend-framework-coding-standards-for-php-file-formatting



Zend Framework 中的 Php 編碼通訊協定 (一) - 檔案格式



1. 對於只含有 php 代碼的檔案,我們將在檔案結尾處忽略掉 "?>" 。這是為了防止多餘的空格或者其它字元影響到代碼。


實際上這個問題只有當你不開啟壓縮或緩衝輸出時才會出現 : 



// php.ini - 禁止壓縮輸出及緩衝輸出

zlib.output_compression = off

output_buffering = off


// foo.php - 注意這個時候有一些空格或分行符號掉在了 "?>" 之後,當然這在頁面上是看不到的

<?
php


$foo 

'foo'
;


?>

複製代碼

// index.php - 在包含 foo.php 的同時,實際上我們已經輸出了一些空格或換行了


<?php


include 
'foo.php'
;


session_start
();


?>



複製代碼

這時我們將看到一個警告 (warning) 說 "... Cannot send session cache limiter - headers already sent ..." 這是因為我們在 session_start() 之前輸出了一些看不到的字元。



2. 由 __halt_compiler() 允許的任意的二進位代碼的內容,被 Zend Framework 中的 PHP 檔案或由它們產生的檔案所禁止。


實際上這個規定是為了防止一些極個別的情況發生,例如上例中 :


// foo.php - 我們已經禁用了 "?>"


<?php


// 假如我們想通過 __halt_compiler() 輸出某些東西


if (
defined
(
'__COMPILER_HALT_OFFSET__'
)) {


    
$fp 

fopen
(
__FILE__

'r'
);


    
fseek
(
$fp

__COMPILER_HALT_OFFSET__
);


    
var_dump
(
stream_get_contents
(
$fp
));


}




// 在程式結束時


__halt_compiler();



複製代碼

則在執行 index.php 時我們依然會看到警告,而只要把 __halt_compiler() 注釋掉就不會報錯了。需要注意的是 __halt_compiler() 實際上時語言結構,而非函數或方法。



3. 縮排由四個空格組成,禁止使用定位字元 TAB 。


這個主要是為了代碼美觀整齊。因為在不同的編輯器裡, TAB 定位字元的長度是不一樣的,而空格則是一樣的。實際上這已經成為編寫代碼的預設標準之一。 



例如 :

if (
$x 
== 
1
) {


    
$indented_code 

1
;


    if (
$new_line 
== 
1
) {


        
$more_indented_code 

1
;


    }


}


複製代碼

4. 變數賦值必須保持相等間距和排列。


例如 :

$variable1 = 
"demo"



$var2      

"demo2"
;


複製代碼

5. 每行代碼長度應控制在80個字元以內,最長不超過120個字元。


因為 linux 讀入檔案一般以80列為單位,就是說如果一行代碼超過80個字元,那麼系統將為此付出額外操作指令。這個雖然看起來是小問題,但是對於追求完美的程式員來說也是值得注意並遵守的規範。


例如,下面是在 Zend/Navigation.php 中的一段代碼 :
 




6. 每行結尾不允許有多餘的空格。


這在很多 IDE 或者編輯器裡都是可以設定的,例如在 save 儲存操作執行時,順便去掉多餘的空格。



7. 行結束標誌遵循 Unix 文字檔的約定,行必需以單個分行符號 "/n" (LF) 結束。分行符號在檔案中表示為10,或16進位的 0x0A 。 不要使用蘋果作業系統的斷行符號 "/r" (0x0D) 或 Windows 系統的斷行符號換行組合如 "/r/n" (0x0D,0x0A) 。


這個規定沒有貶低蘋果機或者 Windows 的意思,而事實確實是,LAMP 還是主流,所以遵循其檔案約定也是為了在 liunx 系統上表現更好的效能。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.