PHP 程式撰寫風格
PHP Code Sniffer
- 安裝並且執行 PHP Coding Style Fixer
- --dry-run and show diff
$cat foo.php | php-cs-fixer fix --diff -
- fix it
$ php-cs-fixer fix /path/to/project --level=psr2
- --dry-run and show diff
PSR撰寫規範
- PSR-1: Basic Coding Standard
- PSR-2: Coding Style Guide
- PSR-3: Logger Interface
- PSR-4: Autoloader
- PSR-6: Caching Interface
- PSR-7: HTTP message interfaces
PSR-1 的重點摘錄
1. 檔案 Files
Use 4 spaces for indenting, not tabs.
4個空白,不可以使用 tabs
Files SHOULD either declare symbols (classes, functions, constants, etc.) or cause side-effects (e.g. generate output, change .ini settings, etc.) but SHOULD NOT do both.
檔案內容必須是宣告檔(classes, functions, constants, etc.)或是執行檔(例如: 產出執行結果, 改變 .ini),不可混著使用。
下面的檔案個不好的例子,在執行擋中宣告 function:
<?php
// side effect: change ini settings
ini_set('error_reporting', E_ALL);
// side effect: loads a file
include "file.php";
// side effect: generates output
echo "<html>\n";
// declaration
function foo()
{
// function body
}
2. 命名空間 Namespace and Class Names
- 必須遵守 "autoloading" PSR4
3. 宣告Class names
- Class 必須宣告為
StudlyCaps. 第一個字母一定要大寫。
- Class 必須使用正式的
Namespace
- Constants 一定要大寫和底線分隔詞
UPPER_CASE
- Properties 並沒定義用哪種形式,但個人建議使用
$camelCase
- Methods 第一個字母一定要小寫
camelCase()
<?php
// PHP 5.3 and later:
namespace Vendor\Model;
class Foo
{
const VERSION = '1.0';
const DATE_APPROVED = '2012-06-01';
// public property. no runtime type-checking.
public $nameAsProperty;
// private property with type-checking.
private $name;
public function getName(): string {
return $this->name;
}
public function setName(string $newName) {
$this->name = $newName;
}
// public metods
public function fetchData(): array {
return [1, 2, 3];
}
}