[TOC=2]
## 1. 概述
文件必須只使用 `<?php` 和 `<?= ` 標簽。
對于 PHP 代碼,文件必須僅使用沒有 BOM 的 UTF-8。
* 文件應該任一聲明的符號(類,函數,常量等)或引起副作用(例如產生的輸出,修改的 .ini 設置等),但不應該一舉兩得。
* 命名空間和類必須遵循“自動加載”PSR:[ PSR-0, PSR-4 ]。
* 類名必須在聲明中聲明 `StudlyCaps`。
* 類常量必須以全部大寫形式用下劃線分隔符聲明。
* 必須聲明方法名稱 `camelCase`。
## 2. 文件
### 2.1 PHP標簽
PHP 代碼必須使用長 `<?php ?>` 標簽或短回聲標簽; 它不能使用其他標簽變體。`<?= ?>`
### 2.2 字符編碼
PHP 代碼必須只使用沒有 BOM 的 UTF-8。
### 2.3 副作用
一個文件應該聲明新的符號(類,函數,常量等)并且不會產生其他副作用,或者它應該執行帶副作用的邏輯,但是不應該同時執行這兩個操作。
短語“副作用”意味著僅僅通過包括 文件來執行與聲明類,函數,常數等不直接相關的邏輯。
“副作用”包括但不限于:生成輸出,顯式使用 `require` 或 `include` 連接外部服務,修改 ini 設置,發出錯誤或異常,修改全局或靜態變量,讀取或寫入文件等等。
以下是具有聲明和副作用的文件示例;
即,要避免的一個例子:
~~~php
<?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
}
~~~
以下示例是包含沒有
副作用的聲明的文件; 即,模仿的例子:
~~~php
<?php
// declaration
function foo()
{
// function body
}
// conditional declaration is *not* a side effect
if (! function_exists('bar')) {
function bar()
{
// function body
}
}
~~~
## 3.命名空間和類名
命名空間和類必須遵循“自動加載”PSR:[ PSR-0,PSR-4 ]。
這意味著每個類本身都在一個文件中 ,并且位于至少一個級別的命名空間中:頂級供應商名稱。
類名必須在聲明中聲明 `StudlyCaps`。
為 PHP 5.3 編寫的代碼,必須使用正式的命名空間。
例如:
~~~php
<?php
// PHP 5.3 and later:
namespace Vendor\Model;
class Foo
{
}
~~~
代碼 5.2.x 書面和前,應使用偽命名空間約定
的 Vendor_ 前綴上的類名。
~~~php
<?php
// PHP 5.2.x and earlier:
class Vendor_Model_Foo
{
}
~~~
## 4.類常量,屬性和方法
術語“class”指的是所有類,接口和特征。
### 4.1 常量
類常量必須以全部大寫形式用下劃線分隔符聲明。
例如:
~~~php
<?php
namespace Vendor\Model;
class Foo
{
const VERSION = '1.0';
const DATE_APPROVED = '2012-06-01';
}
~~~
### 4.2 屬性
本指南有意避免關于使用任何建議
`$StudlyCaps` ,`$camelCase` 或 `$under_score` 屬性名稱。
無論使用何種命名約定,都應該在
合理的范圍內始終如一地應用。該范圍可以是供應商級別,包級別,類級別
或方法級別。
### 4.3 方法
必須聲明方法名稱 `camelCase()`。
- 文檔說明
- Java 相關
- 環境配置
- PHP 相關
- 開發規范
- PSR-1: 基本編碼標準
- PSR-2: 編碼風格指南
- PSR-3: 記錄器接口
- PSR-4: 自動加載器
- 部分注解
- 命名空間
- 自動加載
- 環境搭建
- phpstudy
- sublime text3
- Centos6.*
- Centos7.*
- redis 安裝
- 在Linux上安裝NodeJS
- 安裝Crontab UI
- tomcat
- Composer
- 開發優化
- 擴展使用
- Yaconf
- 開發安全
- 經典案例
- 站內信設計
- 微擎相關
- Linux 相關
- 基本常用
- wget
- crontab
- Systemd
- yum
- cat && tac
- kill
- tail
- cat
- vim
- nginx
- 前端相關
- Grid 布局
- Flex 布局
- 雜項
- JS 位運算
- JS 基礎
- Vue
- Axios
- 常用正則
- 命名參考
- sass
- 簡單技巧
- Web Worker
- HTTP
- Content-Type
- 狀態碼
- MySql 相關
- 連接操作
- 用戶相關
- 數據庫表
- 字段操作
- 時間函數
- 文檔解讀
- 命令
- 優化
- 數據庫優化
- 電腦使用
- 系統優化
- 軟件卸載
- 并發優化