自動車局の戦い:PSR-0対PSR-4
キーテイクアウト
- PSR-0とPSR-4はPHPの自動測定基準であり、PSR-0はクラスの名前空間に基づいてパスを定義し、クラス名のアンダースコアを許可します。 0. パッケージ指向のオートローディングと呼ばれる
- PSR-4は、よりクリーンなパッケージを可能にしますが、実装がより複雑です。また、オートローダーが例外を投げたり、エラーを引き起こしたりして、複数のオートローダーとの互換性を維持しないようにします。
- PHPトレーニングの初心者の段階を通過した場合、PSR-0を聞いたことがあります。これは、必要や含めるなどのステートメントを使用せずにコードにPHPクラスを自動的に含める方法を定義する自動ローディング標準です。
PSR-0は、クラスの名前空間を見て、その情報からハードドライブ上の位置を識別します。たとえば、クラスのZendMailMessageは/Path/to/Project/lib/vendor/zend/mail/message.php。
につながります
PSR-0は、5.2以前の移行を容易にするために、代替としてクラス名のアンダースコアもサポートしています。 zend_mail_messageは/path/to/project/lib/vendor/zend/mail/message.php。にもつながります
作曲家Composerが現れてPHPパッケージ管理の世界を席巻したとき、状況は変わりました。いくつかのルールのために、フォルダーはしばしば複製され、Composerを介してPSR-0クラスのインストールを見ると深くなりすぎました。たとえば、一部のフォルダー構造は次のようになりました:
これはせいぜい混oticとしています。なぜなら:
vendor/ vendor_name/ package_name/ src/ Vendor_Name/ Package_Name/ ClassName.php # Vendor_Name\Package_Name\ClassName tests/ Vendor_Name/ Package_Name/ ClassNameTest.php # Vendor_Name\Package_Name\ClassNameTest
「SRC」および「テスト」ディレクトリには、ベンダーとパッケージのディレクトリ名を含める必要があります。これは、PSR-0コンプライアンスのアーティファクトです。
したがって、いくつかの高度に資格のあるPHP開発者が集まって、新しい標準の提案をまとめました:psr-4。psr-4
PSR-4は、必要に応じてPSR-0を補完し、協力することを目指しています。完全に置き換えるわけではありません。それはできますが、そうする必要はありません。 PSR-4の主な目標は、PSR-0の残骸と5。3日前の残骸を完全に除去し、より簡潔なフォルダー構造を可能にすることです。 PSR-4を使用すると、上記のフォルダーツリーが次のようになります:
PSR-0のアップグレードはオプションではありませんでした
これは非常に重要です。これは、PSR-4の実装を実装しながら、よりクリーンなパッケージを許可しているが、実装がはるかに複雑になることを意味します。 PSR-4パッケージ指向のオートローディングを呼び出します。これは、シンプルさの前にパッケージの清潔さを支持するためです。
これは、クラスをパッケージコードのどこにでも配置できることを意味します。これは、人間としての意味があります。
さらに、ドラフトは、複数のオートローダーが登録される可能性があるという理由だけで、PSR-4オートローダーが例外をスローしたりエラーを引き起こすことはないことを明示的に述べています。エラーとフローを停止すると、この互換性が壊れます。障害に関する追加情報が必要な場合は、PSR-3互換のロガーまたはその他の任意の手段を使用する必要があります。
新しいfoobarquxquuxを呼び出す場所;新しいfoobarquxquuxtestで、最初の登録ディレクトリからロードしようとします。 2番目からロードしようとします
PSR-4についてどう思いますか?以下のコメントでお知らせください。または、多くの議論の1つであなたの意見を表明してください。
提案された目標は次のとおりです。すべてのパッケージに少なくとも2つの名前空間レベル(ベンダーとパッケージ)が含まれている必要があることをPSR-0ルールに保ち、ベンダーパッケージコンボが任意のフォルダーにマッピングできることを確認し、INFIXを許可しますベンダーパッケージのコンボと、完全に資格のあるクラス名の残りの間のフォルダー。
vendor/
vendor_name/
package_name/
src/
Vendor_Name/
Package_Name/
ClassName.php # Vendor_Name\Package_Name\ClassName
tests/
Vendor_Name/
Package_Name/
ClassNameTest.php # Vendor_Name\Package_Name\ClassNameTest
vendor/
vendor_name/
package_name/
src/
ClassName.php # Vendor_Name\Package_Name\ClassName
tests/
ClassNameTest.php # Vendor_Name\Package_Name\ClassNameTest
PSR-0およびPSR-4オートローディング
に関するよくある質問
はい、同じプロジェクトでPSR-0とPSR-4の両方を使用することが可能です。ただし、同じクラスをオートロードするために使用すべきではないことに注意することが重要です。両方の標準を使用することは、一部のレガシーコードがPSR-0標準に従う大規模プロジェクトで有益であり、新しいコードはPSR-4標準に従います。
PSR-4は、オートローディングに対するより柔軟なアプローチを提供することにより、PSR-0を改善します。開発者は、名前空間の一部を任意のディレクトリにマッピングできるようになり、ディープディレクトリネストの必要性が減ります。これにより、プロジェクトのディレクトリ構造の管理とナビゲートが容易になります。
以上が自動車局の戦い:PSR-0対PSR-4の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

PHPで前処理ステートメントとPDOを使用すると、SQL注入攻撃を効果的に防ぐことができます。 1)PDOを使用してデータベースに接続し、エラーモードを設定します。 2)準備方法を使用して前処理ステートメントを作成し、プレースホルダーを使用してデータを渡し、メソッドを実行します。 3)結果のクエリを処理し、コードのセキュリティとパフォーマンスを確保します。

PHPはMySQLIおよびPDO拡張機能を使用して、データベース操作とサーバー側のロジック処理で対話し、セッション管理などの関数を介してサーバー側のロジックを処理します。 1)MySQLIまたはPDOを使用してデータベースに接続し、SQLクエリを実行します。 2)セッション管理およびその他の機能を通じて、HTTPリクエストとユーザーステータスを処理します。 3)トランザクションを使用して、データベース操作の原子性を確保します。 4)SQLインジェクションを防ぎ、例外処理とデバッグの閉鎖接続を使用します。 5)インデックスとキャッシュを通じてパフォーマンスを最適化し、読みやすいコードを書き、エラー処理を実行します。

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。
