Skip to content

mk201309/test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

基本編碼規範

本章節在於訂定標準編碼元件以確保共享PHP code之間高等技術的互用性

"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" 這些關鍵字在這份文件的意思等同於 RFC 2119 裡的描述.

  1. 概要

  • 檔案 MUST 使用 <?php<?= 標籤.

  • PHP 檔案 MUST 只能使用 UTF-8 without BOM.

  • 檔案 SHOULD 不論是 聲明符號 (類別, 函示, 常數等) 還是 產生副作用 (產生輸出, 更改 .ini 設定等) SHOULD NOT 同時進行

  • Namespaces 和 classes MUST 遵循 PSR-0.

  • Class names MUST 宣告 StudlyCaps.

  • Class constants MUST 宣告為全大寫並用底線區分

  • Method names MUST 宣告 camelCase.

  1. 檔案

2.1. PHP 標籤

PHP code MUST 使用 long <?php ?> 標籤或是 short-echo <?= ?> 標籤 MUST NOT 使用其他標籤變化.

2.2. 字元編碼

PHP code MUST 只能使用 UTF-8 without BOM.

2.3. 副作用

一個檔案 SHOULD 宣告 new symbols (classes, functions, constants, etc.) 並不會引起其他副作用, 或者 SHOULD 執行副作用的邏輯, 但 SHOULD NOT 同時進行.

副作用(side effects) 意指執行無直接關係的 declaring classes, functions, constants, etc., 僅僅從包含的文件.

副作用包含但不限於: 產生輸出, 清楚的使用 require or include, 連結外部服務, 修改ini設定, 發出錯誤或異常, 修改全局或靜態變量, 讀取或寫入檔案, 以此類推.

下面是同時宣告和副作用應該避免的範例

<?php
// 副作用: 改變 ini 設定
ini_set('error_reporting', E_ALL);

// 副作用: 載入檔案
include "file.php";

// 副作用: 產生輸出
echo "<html>\n";

// 宣告
function foo()
{
    // function body
}

下面是應當效仿的沒有副作用的宣告檔案範例

<?php
// 宣告
function foo()
{
    // function body
}

// 條件式宣告 *not* 副作用
if (! function_exists('bar')) {
    function bar()
    {
        // function body
    }
}
  1. 命名空間和類別名稱

命名空間和類別名稱 MUST 遵循 PSR-0.

意思是每個類別本身在一個檔案中, 並且是在一個命名空間裡, 至少在一個層面 是一個頂級供應者名稱.

類別名稱 MUST 宣告 StudlyCaps.

PHP 5.3 之後的代碼編寫 MUST 使用正規式命名空間

For example:

<?php
// PHP 5.3 之後:
namespace Vendor\Model;

class Foo
{
}

5.2.x 之前的代碼編寫 SHOULD 使用偽命名空間在類別名稱加上前綴字 Vendor_.

<?php
// PHP 5.2.x 之前:
class Vendor_Model_Foo
{
}
  1. 類別 常量, 屬性, 方法

類別是指所有的類別, 接口, 特性.

4.1. 常量

類別 常量 MUST 宣告為全大寫並用底線區分.

For example:

<?php
namespace Vendor\Model;

class Foo
{
    const VERSION = '1.0';
    const DATE_APPROVED = '2012-06-01';
}

4.2. 屬性

本指南有意避免任何關於使用 $StudlyCaps, $camelCase, 或 $under_score 屬性名稱的建議.

無論怎樣的命名協定 SHOULD 使用在合理的範圍, 該範圍可能是 供應商級, 封裝級, 類別級, 方法級.

4.3. 方法

方法名稱 MUST 宣告 camelCase().

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published