PHP は柔軟性があるため、多くの人はコードを記述するときに適切なコード仕様に注意を払わず、すでに柔軟性のある PHP コードが乱雑に見えます。実際、PSR 仕様 PSR -1 および PSR-2 では、PHP コーディングのいくつかの仕様が定義されており、これらの仕様にしっかり従っていれば、柔軟なスクリプト言語を使用した場合でも、非常に美しく整ったコードを書くことができます。まず、承認された PSR 仕様を見て、次に PSR-1 および PSR-2 仕様の特定の要件のいくつかを簡単に説明します。
合格 PSR
##PSR-1 基本コーディング仕様
( 1) オープニングおよび終了タグまず、PHP コードは (2) 副作用PHP ファイルは、クラス、インターフェイス、関数などを宣言するか、論理操作 (ファイルの読み書きやブラウザへの出力の送信など) を実行しますが、両方を同時に行うべきではありません。 (3) 命名クラスの命名は、大文字で始まるキャメルケースの命名規則に従う必要があります。つまり、クラス名は大文字で始める必要があります。プロパティに名前を付ける必要はありませんが、一貫性を持たせる必要があります。メソッド名は、小文字で始まるキャメルケースの命名規則に準拠する必要があります。クラス定数内の文字はすべて大文字にする必要があり、単語はアンダースコアで区切られます。 関連する推奨事項: 「PHP 知識 」
PSR-2 コーディング スタイル仕様
(1) PSR -1 では、PHP コードが タグで終わらず、空行で終わる必要があると規定しています。 (2) 名前空間宣言の後に空行を挿入し、use 文ブロックの後にも空行を挿入する必要があります。同じコード行に複数の use ステートメントを作成しないでください。 (3) classclass キーワード、クラス名、extends およびimplements キーワードの先頭と末尾は同じ行になければなりません。クラスが複数のインターフェイスを実装する場合、インターフェイス名はクラス宣言の同じ行に置くことも、別の行に置くこともできます。これらのインターフェイス名を複数行に配置する場合は、最初のインターフェイス名を単独の行に配置し、implements キーワードの後に続かないようにする必要があります。クラスの左中括弧 ({) は関数宣言の後の独自の行に記述する必要があり、閉じ中括弧 (}) もクラス本体の後の独自の行に記述する必要があります。つまり、クラス宣言は次のようになります。class EarthGame extends Game implements Playable, Savable { //类体 }クラス名をクラス宣言と同じ行に置くことも可能です。
class EarthGame extends Game implements Playble, Savable { //类体 }(4) 属性宣言各属性にはアクセス修飾子 (public、private、または protected) が必要です。キーワード var を使用して属性を宣言することはできません。属性名の仕様は PSR-1 ですでに説明されています。アンダースコア、小文字のキャメルケースの命名、または大文字のキャメルケースの命名を使用できますが、一貫性を保つ必要があります。 (属性には小文字のキャメルケースを使用することを個人的にお勧めします) (5) メソッドの開始と終了 すべてのメソッドにはアクセス修飾子 (public、private、または protected) が必要です。アクセス修飾子は、abstract または Final の後、static の前になければなりません。デフォルト値を持つメソッドパラメータはパラメータリストの最後に配置する必要があります。
#単一行宣言
メソッドの開始中括弧 ({) はメソッド名の後の独立した行に記述し、終了中括弧を記述する必要があります。 (}) はメソッドにも記述する必要があります。本体は独自の行 (メソッド コードの直後) に記述する必要があります。メソッドパラメータリストはスペースで始まったり終わったりしてはなりません(つまり、メソッドパラメータリストを括弧で囲む必要があります)。各パラメータでは、パラメータ名 (またはデフォルト値) の後にカンマが必要で、カンマの後にはスペースが必要です。これは次のように複雑に聞こえるかもしれません。final public static function generateTile(int $diamondCount, bool $polluted = false) { //方法体 }
#複数行の宣言
メソッドに多くのパラメーターがある場合、単一行のメソッド宣言は現実的ではありません。この時点で、各パラメーター (タイプ、パラメーター変数、デフォルト値、カンマを含む) が独自のインデント行に配置されるようにパラメーター リストを分割できます。この場合、閉じ括弧はパラメータ リストの後の行に、メソッド宣言の先頭に揃えて配置する必要があります。左中括弧 ({) は、同じ行の右括弧の後にスペースで区切って配置する必要があります。メソッド本体は新しい行で開始する必要があります。これも複雑に聞こえるかもしれませんが、次の例はこのルールを理解するのに役立ちます。public function __construct( int $size, string $name, bool $warparound = false, bool $aliens = false ) { //方法体 }(6) 行とインデントコードはタブではなく 4 つのスペースを使用してインデントする必要があります。エディターの設定を確認して、Tab キーが押されたときにタブの代わりに 4 つのスペースを使用するように設定できます。コードの各行は 120 文字以下にする必要があります。 (7) メソッドと関数呼び出しメソッド名と左括弧の間にスペースを入れることはできません。メソッド呼び出しのパラメータ リストの規則は、メソッド宣言のパラメータ リストの規則と同じです。つまり、単一行の呼び出しの場合、開き括弧の後または閉じ括弧の前にスペースを入れることはできません。各パラメータの後にはコンマを入力し、次のパラメータの前にはスペースを入れる必要があります。メソッド呼び出しに複数行のコードが必要な場合は、各パラメータを個別の行にインデントして、右かっこを個別の行に配置する必要があります。
$earthGanme = new EarthGame( 5, 'earth', true, true ); $earthGame::generateTile(5, true);(8) プロセス管理
流程控制关键字(if、for、while等)后面必须紧跟一个空格。但是,开始圆括号后不能有空格。同样,结束圆括号前不能有空格。因此内容应该紧贴在括号内的。与类和(单行)函数声明相比,流程控制代码的开始花括号应该与结束圆括号在同一行。结束花括号应该自成一行。以下是一个简单的示例。
$title = []; for ($x = 0; $x < $diamondCount; $x++) { if ($polluted) { $title[] = new PollutionDecorator(new DiamondDecorator(new Plains())); } else { $title[] = new DiamondDecorator(new Plains()); } }
注意if和for之后的空格。for和if语句与圆括号在同一行,而且它们的结束圆括号后都有一个空格,然后是流程控制体的开始花括号。
以上がPHPコーディングスタイルの基本仕様の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。