PHPの標準仕様を詳しく解説

小云云
小云云オリジナル
2018-03-19 14:14:423195ブラウズ

この記事では主にPHPの標準仕様について詳しく解説し、皆様のお役に立てれば幸いです。

psr0: 自動読み込み標準

は psr4 に置き換えられました。詳細については、こちらをご覧ください

1. 必須: 完全修飾名前空間とクラス形式: c7d6308d52d1cb887475973afa3ff9f1(65b7377a1df92bec1d41c5523cac7d43)*6d6fc9c6d0196d3f8d089eba49b24a5c または e001818591141260ad444db4de1b1edb2 である必要があります。 必須: ファイルは BOM3 なしで UTF-8 でエンコードされている必要があります。 .php ファイル内のコードは、クラス、関数、定数などの定義などの宣言、または一部の副次的な操作のみにすることができます。 4. 名前空間とクラスは psr0 または psr45 を満たす必要があります。クラス名は StudlyCaps [Camel. 6. クラス内の定数の文字はすべて大文字で、アンダースコアで区切る必要があります。 7. メソッド名はキャメルケースの命名規則に従っている必要があります。

説明

副操作包含却不仅限于:生成输出、直接的 require 或 include、连接外部服务、
修改 ini 配置、抛出错误或异常、修改全局或静态变量、读或写文件等。<?php// side effect: change ini settingsini_set(&#39;error_reporting&#39;, E_ALL);// side effect: loads a fileinclude "file.php";// side effect: generates outputecho "<html>\n";// declarationfunction foo(){
    // function body}<?php// declarationfunction foo(){
    // function body}// conditional declaration is not a side effectif (! function_exists(&#39;bar&#39;)) {    function bar()
    {
        // function body
    }
}

psr2プログラミングスタイル仕様

はpsr1

1の拡張です。 インデントは4つのスペースを使用する必要があります。 3. 1行あたりの文字数は80文字以内に抑える必要があります。理論的には、 120 を超えてはなりませんが、厳密な制限を設けることはできません。 4. 各名前空間宣言および使用宣言ブロックの後に空行を挿入する必要があります。すべての使用は名前空間の後に宣言する必要があります。 5. メソッドおよびクラスの左中括弧は、宣言の後に新しい行に記述する必要があります。 6. abstract と Final は修飾子 private、protected、public の前に置く必要があり、static はアクセス修飾子の後に宣言する必要があります。 7. 制御構造体のキーワードの後に​​はスペースが必要ですが、メソッドまたは関数を呼び出す場合にはスペースを入れてはいけません。 8. 制御構造体の左中括弧は、宣言と同じ行に記述する必要があります。 9. 制御構造の左括弧の開始と右括弧の前にスペースがあってはなりません。 10. すべての PHP ファイルは、Unix LF を行末記号として使用する必要があります。
11. すべての PHP ファイルは空行で終わる必要があります。 12. 空白行以外の行の後には余分なスペースがあってはなりません。 13. 1 行に複数のステートメントを含めることはできません。 14. すべての PHP キーワードは小文字である必要があります。

インスタンス

<?phpnamespace Vendor\Package;use FooInterface;use BarClass as Bar;use OtherVendor\OtherPackage\BazClass;class Foo extends Bar implements FooInterface{
    public function sampleMethod($a, $b = null)
    {
        if ($a === $b) {
            bar();
        } elseif ($a > $b) {            $foo->bar($arg1);
        } else {
            BazClass::bar($arg2, $arg3);
        }
    }    final public static function bar()
    {
        // method body
    }
}

psr4 が自動的にロードされました

374a617deb4f1e1a0d1ab49b52f43400(6e04880826c89117ee8f8e8a48ca5f62)*7fff5d86c19d4c1c485a0d77008f2dd8
注: psr4 は完全修飾名前空間ではなく、完全修飾クラス名と呼ばれるようになりました。 1. 完全修飾クラス名には、「ベンダー名前空間」と呼ばれるトップレベルの名前空間が必要です。 2. 完全修飾クラス名には、1 つ以上のサブ名前空間を含めることができます。 3. 完全修飾クラス名には、最終クラス名が必要です。アンダースコアには特別な意味はありません。 5. 完全なクラス名は大文字と小文字で構成できます。すべてのクラス名は大文字と小文字を区別する必要があります。 7. 完全なクラス名では、最初の名前空間区切り文字を削除し、その前の 1 つ以上の連続する名前空間とサブ名前空間が「名前空間プレフィックス」として使用されます。これは、少なくとも 1 つの「ファイル ベース ディレクトリ」に対応する必要があります。名前空間プレフィックスの直後にあるサブ名前空間は、対応する「ファイル ベース ディレクトリ」と一致する必要があり、名前空間区切り文字がディレクトリ区切り文字として使用されます。 9. 最後のクラス名は、.php 接尾辞が付いた対応するファイルと同じ名前にする必要があります。 10. オートローダーの実装では、例外をスローしてはならず、いかなるレベルのエラー メッセージもトリガーしてはならず、戻り値を持たないようにしてください。

インスタンス

完全なクラス名 名前空間プレフィックス ファイルベースディレクトリ ファイルパス
AcmeLogWriterFile_Writer AcmeLogWriter ./acme-log-writer/lib/ . /acme-log-writer/lib/File_Writer.php
AuraWebResponseStatus AuraWeb /path/to/aura-web/src/ /path/to/aura-web/src/Response/Status 。 php
SymfonyCoreRequest SymfonyCore ./vendor/Symfony/Core/ ./vendor/Symfony/Core/Request.php
ZendAcl Zend /usr/include s/ゼンド/ /usr/includes/Zend/Acl.php

関連推奨事項:

PHP標準クラス(stdclass)の使用例

PHP標準ライブラリSPL

php標準生成検証コードプログラム

以上がPHPの標準仕様を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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