検索
ホームページバックエンド開発PHPチュートリアルPSR を理解する - PHP コーディング スタイル ガイド

Understanding PSR- The PHP Coding Style Guide

PHP でしばらく開発をしている人なら、PSR-12 という用語に遭遇したことがあるでしょう。これは、PHP コミュニティで最も広く受け入れられているコーディング標準の 1 つであり、さまざまなプロジェクト間で PHP コードベースの一貫性を確保することを目的としています。単独で作業している場合でも、チームの一員として作業している場合でも、PSR-12 に従うことで、コードがよりクリーンになり、読みやすくなり、保守が容易になります。このブログでは、PSR-12 とは何か、なぜ重要なのか、プロジェクトにどのように適用できるのかを詳しく説明します。

目次

  1. PSR-12 とは何ですか?
  2. PSR-12 はなぜ重要ですか?
  3. PSR-12 の重要なルール
    • ファイル構造
    • 名前空間と使用宣言
    • クラスとメソッド
    • 制御構造
    • コメントとドキュメント
  4. PHP プロジェクトに PSR-12 を適用する方法
  5. PSR-12 の追跡に役立つツール
  6. 最終的な感想

PSR-12とは何ですか?

PSR-12 は、PHP-FIG (Framework Interoperability Group) によって開発された、PHP 用の コーディング スタイル ガイド です。これは、以前の PSR-2 標準に基づいて構築されており、最新の PHP の実践を反映し、コードベース間の一貫性を向上させる更新されたルール セットを提供します。

PSR-12 は、クリーンで読みやすく、保守しやすい PHP コードを作成するための青写真と考えてください。 PSR-12 に従うことで、開発者はコードが標準化された構造に準拠していることを確認できるため、他のユーザーとのコラボレーションやオープンソース プロジェクトでの作業が容易になります。

PSR-12 が重要な理由

PSR-12 のようなコーディング標準は、スペースやタブの細かい点を気にするだけではありません。それらが重要な理由は次のとおりです:

  • 読みやすさ: 標準スタイルに従ったコードは、特にプロジェクトに慣れていない開発者にとって読みやすくなります。
  • コラボレーション: 全員が同じルールに従えば、共同作業がよりスムーズかつ効率的になります。
  • 保守性: クリーンで一貫性のあるコードは、時間の経過とともにデバッグ、テスト、拡張が容易になります。
  • 相互運用性: オープンソース プロジェクトまたはサードパーティ ライブラリを統合する場合、共通の標準に従うことで、異なるコードベース間での互換性が確保されます。

PSR-12 の重要なルール

PSR-12 が規定する重要なルールのいくつかを詳しく見てみましょう。細かいガイドラインは数多くありますが、最も目立つガイドラインを以下に示します。

1. ファイル構造

  • 開始タグ: PHP ファイルでは
  • エンコーディング: ファイルは BOM (バイト オーダー マーク) なしで UTF-8 でエンコードする必要があります。
  • 行の長さ: 行は 120 文字を超えてはなりませんが、80 文字までの行が推奨されます。
  • 空白行: PHP の開始タグの後または終了タグの前に空白行があってはなりません。さらに、return ステートメントの前およびメソッド定義の間に 1 つの空白行が必要です。

2. 名前空間と使用宣言

PSR-12 では、明確性を高めるために、名前空間と使用宣言が特定の順序に従う必要があります。

  • 名前空間宣言: 名前空間宣言は、PHP 開始タグの後の最初の行である必要があります。名前空間の後には空白行が 1 行必要です。
  • Use 宣言: すべての use 宣言は、名前空間宣言の後にグループ化し、空白行で区切る必要があります。さらに、最後の use ステートメントの後には空行が 1 行必要です。

例:

<?php namespace App\Controllers;

use App\Models\User;
use App\Repositories\UserRepository;

class UserController {
    // Class implementation
}

3. クラスとメソッド

PSR-12 では、クラス、プロパティ、メソッドの宣言方法に関していくつかの厳格なルールが適用されます。

  • クラス宣言: class キーワードの後に​​スペース、その後にクラス名を続ける必要があります。開き中括弧 { はクラス宣言と同じ行に配置し、閉じ中括弧 } は別の行に配置する必要があります。
  • プロパティ: すべてのプロパティに対して可視性 (パブリック、プロテクト、プライベート) を宣言する必要があります。
  • メソッド: クラス宣言と同様に、関数キーワードの後に​​スペース、その後にメソッド名を続ける必要があります。すべてのメソッドに対して可視性を宣言する必要があります。
class UserController {
    private $userRepository;

    public function __construct(UserRepository $userRepository) {
        $this->userRepository = $userRepository;
    }
}

4. 制御構造

if、for、switch などの制御構造は、特定のルールに従う必要があります:

  • 構造: 制御キーワードと左括弧の間にはスペースが 1 つ必要です。単一行のステートメントであっても、中括弧 {} を常に使用する必要があります。
  • インデント: 制御構造内のすべてのブロックは 1 レベル (通常は 4 つのスペース) でインデントする必要があります。
if ($user->isAdmin()) {
    echo "User is an admin";
} else {
    echo "User is not an admin";
}

5. コメントとドキュメント

コメントは、コードの特定の部分が存在する理由を説明するために非常に重要です。 PSR-12 は、適切かつ明確なコメントの必要性を強調しています。

  • コメントをブロック: 複数行のコメントには /* */ を使用し、コメントの前に空行を置きます。
  • 単一行コメント: インライン コメントには // を使用し、コメントが意味のあるものであることを確認してください。
<?php namespace App\Controllers;

use App\Models\User;
use App\Repositories\UserRepository;

class UserController {
    // Class implementation
}

PHP プロジェクトに PSR-12 を適用する方法

プロジェクトで PSR-12 に従うには、コードを記述するときにガイドラインに手動で従うこともできますが、確実に準拠する最善の方法は、自動化ツールを使用することです。

まず、次の一般的な方法をよく理解してください:

  • 一貫したインデントを使用する: インデントには 4 つのスペースが必要です。
  • 行の長さを制限する: 読みやすくするためには 80 文字が推奨されますが、行は 120 文字未満に抑えるようにしてください。
  • コード構造を整理する: クラス宣言、可視性、および制御構造のルールに従います。

PSR-12 の追跡に役立つツール

コードが PSR-12 に従っていることを手動で確認するには時間がかかる場合がありますが、このプロセスの自動化に役立つツールがあります。

1.PHP_CodeSniffer

PHP コードが PSR-12 に従っていることを確認するための最も人気のあるツールの 1 つは、PHP_CodeSniffer です。コードを分析し、標準から逸脱している箇所を指摘します。

インストールして使用するには:

class UserController {
    private $userRepository;

    public function __construct(UserRepository $userRepository) {
        $this->userRepository = $userRepository;
    }
}

次に、コードに対して実行します。

if ($user->isAdmin()) {
    echo "User is an admin";
} else {
    echo "User is not an admin";
}

2. PHP CS フィクサー

もう 1 つの便利なツールは、PHP CS Fixer です。問題を検出するだけでなく、PSR-12 に準拠するようにコードを自動的に修正することもできます。

// Fetch user from the repository
$user = $userRepository->find($id);

/*
 * If user is not found, throw an exception.
 * This helps in handling invalid user IDs.
 */
if (!$user) {
    throw new NotFoundException();
}

次のコマンドでフィクサーを実行します:

composer require "squizlabs/php_codesniffer=*"

3.PHPStorm

PHPStorm を使用している場合は、PSR-12 に従うように設定できます。 設定 -> に移動します。 編集者 -> コードスタイル -> PHP を選択し、標準を PSR-12 に設定します。

最終的な考え

PHP プロジェクトで PSR-12 に従うことは、単に任意のルールに従うだけではありません。一人で作業している場合でも、チームで作業している場合でも、コードをよりクリーンで読みやすく、保守しやすくすることが重要です。 PSR-12 に従うことで、自分自身のためだけでなく、PHP コミュニティ全体のためにコードを書くことになります。

この標準の採用は、プロフェッショナルで一貫性があり、保守しやすい PHP コードを作成するための一歩です。前述のツールを使用してプロセスを簡単にし、プロジェクトがどれだけクリーンで整理されたものになるかを見てください!

コーディングを楽しんでください!

以上がPSR を理解する - PHP コーディング スタイル ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
unset()とsession_destroy()の違いは何ですか?unset()とsession_destroy()の違いは何ですか?May 04, 2025 am 12:19 AM

thedifferencebetferencefued fieneunset()andsession_destroy()isthatunset()clearsspecificsessionvariablesはsessionactiveであり、ssession_destroy()ターミナテンテンセッション

負荷分散のコンテキストでの粘着性セッション(セッションアフィニティ)とは何ですか?負荷分散のコンテキストでの粘着性セッション(セッションアフィニティ)とは何ですか?May 04, 2025 am 12:16 AM

StickysionsionsureuserRequestsoredtotheSameserverforsessiondataconsistency.1)Sessionidedificationisionidificationsisignivisionsignsignsuserstoserversusing okiesorurlmodifications.2)CondingRoutingDirectSSubSubSubsEntRequestStotheSameserver.3)LoadBalancingDistributeNewuser

PHPで利用可能なさまざまなセッション保存ハンドラーは何ですか?PHPで利用可能なさまざまなセッション保存ハンドラーは何ですか?May 04, 2025 am 12:14 AM

phpoffersvarioussionsionsavehandlers:1)ファイル:デフォルト、simplebutmaybottleneckonhigh-trafficsites.2)memcached:high-performance、yealforspeed-criticalapplications.3)redis:similartomcached、witordededpersistence.4)データベースの提供

PHPでのセッションとは何ですか?なぜそれらが使用されているのですか?PHPでのセッションとは何ですか?なぜそれらが使用されているのですか?May 04, 2025 am 12:12 AM

PHPでのセッションは、サーバー側のユーザーデータを保存して、複数のリクエスト間で状態を維持するメカニズムです。具体的には、1)セッションはsession_start()関数によって開始され、データは保存され、$ _Sessionスーパーグローバルアレイを読みます。 2)セッションデータはデフォルトでサーバーの一時ファイルに保存されますが、データベースまたはメモリストレージを介して最適化できます。 3)セッションを使用して、ユーザーのログインステータス追跡とショッピングカート管理機能を実現できます。 4)セッションの安全な送信とパフォーマンスの最適化に注意を払い、アプリケーションのセキュリティと効率を確保します。

PHPセッションのライフサイクルを説明してください。PHPセッションのライフサイクルを説明してください。May 04, 2025 am 12:04 AM

phpssionsStartWithsession_start()、figenateAuniqueidandcreateSaServerfile; theySistacrossRequestsandcanbemanbemanBeithsession_destroy()

絶対的なセッションタイムアウトとアイドルセッションのタイムアウトの違いは何ですか?絶対的なセッションタイムアウトとアイドルセッションのタイムアウトの違いは何ですか?May 03, 2025 am 12:21 AM

絶対セッションのタイムアウトはセッションの作成時に開始され、アイドルセッションタイムアウトはユーザーの操作なしに開始されます。絶対セッションタイムアウトは、金融アプリケーションなど、セッションライフサイクルの厳格な制御が必要なシナリオに適しています。アイドルセッションタイムアウトは、ソーシャルメディアなど、ユーザーが長い間セッションをアクティブに保つことを望んでいるアプリケーションに適しています。

セッションがサーバーで機能していない場合、どのような措置を講じますか?セッションがサーバーで機能していない場合、どのような措置を講じますか?May 03, 2025 am 12:19 AM

サーバーセッションの障害は、手順に従って解決できます。1。セッションが正しく設定されていることを確認するために、サーバーの構成を確認します。 2.クライアントCookieを確認し、ブラウザがそれをサポートしていることを確認し、正しく送信します。 3. Redisなどのセッションストレージサービスを確認して、それらが正常に動作していることを確認します。 4.アプリケーションコードを確認して、正しいセッションロジックを確認します。これらの手順を通じて、会話の問題を効果的に診断および修復し、ユーザーエクスペリエンスを改善することができます。

session_start()関数の重要性は何ですか?session_start()関数の重要性は何ですか?May 03, 2025 am 12:18 AM

session_start()iscrucialinphpformangingusersions.1)itInitiateSanewsessionifnoneExists、2)resumesanexistingsession、および3)SetSessionCookieforcontinuityAcrossRequests、ApplicationslicationSliviseSlikeUserauthicationAnticatent。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター