この記事では主に PHP コンポーネント、フレームワーク、および学習価値のある Composer について紹介します。興味のある友人はそれについて学ぶことができます。
コンポーネントとは、PHP アプリケーションの特定の問題を解決するために使用される、パッケージ化されたコードのセット、関連する一連のクラス、インターフェイス、およびトレイトです。たとえば、PHP アプリケーションで HTTP リクエストを送受信する必要がある場合、guzzle/guzzle などの既製のコンポーネントを使用して実装できます。私たちは、すでに実装されている機能を再実装するためにコンポーネントを使用するのではなく、プロジェクトの長期目標を達成するためにより多くの時間を費やすために使用します。
優れた PHP コンポーネントには、次の特徴があります。
フレームワーク、このフレームワークのツールに投資するには多大な費用がかかります。フレームワークは通常、多くのツールを提供しますが、必要なツールが提供されない場合、痛みは私たちに伝わり、私たちは見つけて統合する必要がありますカスタム PHP ライブラリ。サードパーティのコードとフレームワークは同じインターフェイスを使用していない可能性があるため、サードパーティのコードをフレームワークに統合するのは困難な場合があります。
フレームワークを選択するとき、私たちはフレームワークの将来に焦点を当てますが、特定のフレームワークが常に特定の仕事を完了するための最良のツールであることを誰が保証できますか?長年にわたって存在する大規模なプロジェクトでは、適切なパフォーマンスを維持し、常に調整を行う必要がありますが、間違った PHP フレームワークを選択すると、それができない可能性があります。古い PHP フレームワークは、コミュニティ サポートが不足しているため、速度が遅かったり時代遅れになっている可能性があります。これらの古いフレームワークは、多くの場合、最新のオブジェクト指向コードや PHP の新機能の代わりに手続き型コードを使用して書かれています。フレームワーク、考慮すべきことがたくさんあります。
幸いなことに、Laravel はこれらの懸念点に関してうまく機能しているため、多くの PHP フレームワークの中で際立っています。ある意味では、Laravel はコンポーネントベースの開発フレームワークでもあります (コア コンポーネントは独自の Illuminate ライブラリです) 、機能の実装はサードパーティのコンポーネントに大きく依存しています) Symfony に比べて簡単に始められるため、拡張性と使いやすさを兼ね備えています。ただし、Laravel にはいくつかの欠点もあり、たとえば、Laravel 独自のコンポーネントを簡単に分離して Laravel フレームワークの外で使用することはできません (ただし、この状況は改善されると信じています。たとえば、データベース コンポーネントやキュー コンポーネントを分離できるなど)。総合すると、Laravel は依然として、強力なアプリケーションを迅速に作成するのに役立つ優れたフレームワークです。
では、コンポーネントまたはフレームワークを使用する必要がありますか?答えは、適切なツールを適切なものに使用することです。いくつかの PHP コンポーネントを使用して小規模なプロジェクトを迅速に実装できる場合は、コンポーネントを使用してください。複数のチーム メンバーが大規模なプロジェクトに取り組んでいる場合は、PHP によって提供される合意されたガイドラインと構造の恩恵を受けることができます。 (どのフレームワークを使用するか迷った場合は、Laravel を選択してください。がっかりすることはありません) フレームワークを使用すると、プロジェクトの開発を導き、加速することができます。
Packagist で PHP コンポーネントを探します。この Web サイトは、PHP コンポーネントを収集するために使用されます。最適な PHP コンポーネントは Packagist で見つけることができます。
たとえば、http コンポーネントを使用して HTTP メッセージを送受信する場合、検索ボックスで http を検索すると、最初に得られる結果は Guzzle です。これを使って。
Packagist は PHP コンポーネントを見つけるためのコミュニティであり、Composer は PHP コンポーネントをインストールするためのツールです。 Composer は PHP の依存関係マネージャーです。コマンド ラインで実行されます。必要なコンポーネントを Composer に指示すると、Composer はこれらのコンポーネントをダウンロードしてプロジェクトに自動的にロードします。とても簡単です。
Composer と Packagist は密接に連携します。Composer に guzzlehttp/guzzle
コンポーネントを使用するように指示すると、Composer は Packagist から guzzlehttp/guzzle
コンポーネントを取得し、このコンポーネントを検索します。ウェアハウスのアドレス、使用するバージョンを決定し、このコンポーネントの依存関係を見つけて、guzzlehttp/guzzle
コンポーネントとその依存関係をプロジェクトにダウンロードします。
さらに、Composer はプロジェクト内のすべての PHP コンポーネントの PSR 標準に準拠するオートローダーを自動的に生成し、依存関係の管理と自動読み込みを効果的に抽象化します。したがって、Composer は PHP コミュニティにとって最も重要です。自動ロードを手動で実装するために include、require、spl_autoload_register を使用しなければならなかった苦痛な日々を思い出しても過言ではありません。
Composer のインストールと使用方法については、ここでは詳しく説明しませんので、Composer の中国語 Web サイトを参照してください。
以下では、サンプル プロジェクトを使用して、Composer とコンポーネントを使用して PHP アプリケーションを開発する方法を示します。このアプリケーションの機能は、CSV ファイル内の URL をスキャンしてデッド リンクを見つけることです。アプリケーション HTTP リクエストが各 URL に送信され、返された HTTP ステータス コードが 400 以上の場合、デッド リンクが標準出力に送信されます。これはコマンドラインアプリケーションなので、開発後にこのスクリプトを実行し、csvファイルのパスを渡してデッドリンクのリストを標準出力に表示します。
始める前に、既存の PHP コンポーネントを使用してどのタスクを解決できるかを見てみましょう。csv ファイルのデータを反復処理できるコンポーネントが必要です。 csv ファイルにデータを追加します。各 URL は HTTP リクエストを送信するため、HTTP リクエストを送信して HTTP レスポンスを確認できるコンポーネントも必要です。
Packagist を閲覧したところ、guzzlehttp/guzzle
と league/csv
という 2 つのコンポーネントが見つかりました。前者は HTTP メッセージの処理に使用され、後者は HTTP メッセージの処理に使用されます。 CSVデータを処理します。次に、プロジェクトの最上位で次のコマンドを実行します:
composer require guzzlehttp/guzzle composer require league/csv
Composer は依存関係をルート ディレクトリの vendor
ディレクトリにインストールします。インストールが完了したら、composer はルート ディレクトリに生成されます。.json
および composer.lock
ファイル:
##composer.lock file には、プロジェクトの PHP コンポーネントで使用されるすべてのファイルと、コンポーネントの特定のバージョン番号がリストされます。これにより、プロジェクトが特定のバージョンの PHP コンポーネントのみを使用できるように、実際にプロジェクトがロックされます。この利点は、Packagist で利用可能な最新バージョンに関係なく、composer がこのファイルにリストされている特定のバージョンをダウンロードすることです。チーム メンバーが使用できるように、
composer.lock ファイルをバージョン管理に置く必要があります。 . PHP のバージョンが同じである ローカル開発とサーバーで使用する PHP コンポーネントのバージョンが同じであれば、コンポーネントのバージョンの違いによるバグを最小限に抑えることができます。
composer.lock を更新したい場合は、
composer update コマンドを使用できます。
scan.php ファイルを作成し、その先頭で
require# を使用します。ファイル ##Composer によって作成されたオートローダーをインポートします: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">require &#39;vendor/autoload.php&#39;;</pre><div class="contentsignin">ログイン後にコピー</div></div>
Composer によって作成されたオートローダーは、実際には
という名前のファイルであり、vendor
に保存されます。 Composer が各 PHP コンポーネントをダウンロードするとき、各コンポーネントの composer.json
ファイルをチェックして、コンポーネントのロード方法を決定します。この情報を取得した後、Composer はコンポーネントのローカル PSR 標準を作成します。 。このようにして、プロジェクト内の任意の PHP コンポーネントをインスタンス化することができ、これらのコンポーネントはオンデマンドで自動的にロードされます。 コードの記述
コードを記述します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">//使用composer自动加载器
require &#39;vendor/autoload.php&#39;;
//实例Guzzle Http客户端
$client = new GuzzleHttp\Client();
//打开并迭代处理CSV
$csv = League\Csv\Reader::createFromPath($argv[1]);
foreach ($csv as $csvRow) {
try {
//发送HTTP GET请求
$httpResponse = $client->get($csvRow[0]);
//检查HTTP响应的状态码
if($httpResponse->getStatusCode() >= 400) {
throw new Exception();
}
} catch (Exception $e) {
//把死链发给标准输出
echo $csvRow[0] . PHP_EOL;
}
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
以下では、
いくつかの URL を 1 行に 1 つずつ追加します。少なくとも 1 つはデッドリンクです:
次に、ターミナルを開いて
scan.php# を実行します。 ## script:php scan.php urls.csv
2 つのパラメータを渡しました。1 つ目はスクリプト ファイル
scan.php へのパスで、もう 1 つは CSV ファイルへのパスです。出力は次のとおりです。 関連チュートリアル: PHP ビデオ チュートリアル
以上がPHP コンポーネント、フレームワーク、および Composer についての簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。