はじめに
私は今、PHP についていつも思っています。工学の分野にまで進出してきました。かつて、PHP 開発者はスピードを美しさとみなしており、スピードとスケールは常に矛盾していました。今日の PHP プロジェクト、特に大規模プロジェクトは、エンジニアリングと規模の両方を必要とするレベルまで徐々に進化しています。コードをエンジニアリングするということは、ますます複雑なアーキテクチャに進化することを意味します。複雑なアーキテクチャの場合、多くの場合、マイクロサービスが良い選択となります。
最近のプロジェクトでこの質問が必要でした。マップ サービスを開発する必要があるのですが、このサービスはもちろん単純なクラス ライブラリの形式ではなく、独自のデータベースと独自のサービス インターフェイスを持っています。この場合、最善の選択肢はサービス化です。もちろん、Thrift、HTTP など、サービスにはさまざまな方法があります。しかし、現在の部門の環境を評価してみました。言語は PHP が主流で、プロジェクトの進捗も比較的タイトです。私の目には、Thrift、HTTP、その他のメソッドはすべてネットワーク プロトコルを使用してサービスの分離を実現しています。これは深刻な問題であるように見えます。解決。プロジェクトが明らかに危機的な状況にない場合、このアプローチは必要ないと思います。ネットワーク プロトコルのサービス化を使用する場合の欠点は、非常に複雑になることです。この複雑さは、多くの場合、人的資源、物的資源、時間への投資を意味します。そこで、開発用に PHP 言語で「サービス クラス ライブラリ」を提供できればと考えています。
私が考えているのは、PHP の Composer です。
Composer の変更
サービス クラス ライブラリの作成
まず、「サービス クラス ライブラリ」を次から変更する必要があります。私のアプリケーション (xxx/main1 という名前) は独立していますが、この独立性のために、アプリケーション内にディレクトリを作成することは選択しませんでした (実際には、Services などのディレクトリを作成することを考えていました)。しかし、コードが業務プログラムと結合していると、人間の怠惰のせいで、最初から最後まで自分を制御することが難しく、アプリケーション内のさまざまな便利な機能を使用しないことに固執するように感じます。したがって、私の選択は、Git リポジトリに新しいプロジェクトを作成し、xxx/mapService という名前を付けることです。
composer.json
これで 2 つの Git プロジェクト (xxx/main1 と xxx/mapService) ができました。main1 のcomposer.json ファイルに次のステートメントを追加しました。
- dev-master は、mapService の master ブランチを直接使用することを意味します。 MapService に他のタグがある場合は、ここでタグ情報を使用できます。
- repositories はプロジェクトのアドレスです
- ここにあるサービスは、弊社が構築した GitLab 上に配置されています
- mapService 以下の src フォルダーの名前空間は xxxx\\xxxx\\MapService\\ で、PSR-4 をサポートしています。
- mapService は、illuminate/database
更新と変更
エディターは main1 プロジェクト内にあります。mapService プロジェクトを編集および変更し、それを main1 プロジェクトのマスター ブランチにマージしたい場合は、 mapService では、vender/xxx/mapService ディレクトリに直接入力し、Git に対応する操作を実行します。これにより、コードを直接変更できるようになります。独立した構成
この構造の組み合わせは、数千マイルの長行を完了するための最初のステップにすぎません。後ほど重要なことは、このサービスを作成するときに、mapService の独立性を維持するために、main1 内のすべてを使用しないように常に注意する必要があることです (独立性はサービス化の必要条件の 1 つです)。たとえば、私が最初に遭遇した問題は、構成ファイルを独立させる必要があるということでした。 私の実装方法は、mapService 内に直接 Config クラスを作成し、このクラスに直接設定を記述します。 この方法でこの構成ファイルが Git ライブラリに組み込まれるため、この構成ファイルの実装は少し面倒だと常々感じていました。しかし、これ以上良い解決策が思いつきません。 LaravelではServiceProviderを実装することでLaravelのconfigフォルダーにConfigを作成する方法がありますが、この方法はLaravelにのみ適用されます。普遍性なんてない。一方、サービスがどのデータベースを使用するかはそれ自体がサービスの一部であり、サービスの Git ライブラリにそれを置くこととは関係がないようです。 #ディレクトリ構造
ディレクトリ構造は上記のとおりです
- Contracts はインターフェイス プロトコルを提供します
- Exceptions は例外を提供します
- Supports はサードパーティのメソッドまたはクラス ライブラリを提供します
- Models はデータベースとの対話を提供します
- Node.php の実装 特定のインターフェイス
- サービスについて最も重要なことは、インターフェイス プロトコルです。したがって、Contracts フォルダーを作成し、提供されるサービスとインターフェースします。
# インターフェイスの例外処理では、対話のためにエラー コードの代わりに例外を使用するようにする必要があります。そして、これらの例外は可能な限りカスタマイズする必要があります。このようにして、上位レベルでの統一処理の可能性があります。
私は、このアーキテクチャ モデルを PHP コード レベルのサービス指向モデルとして位置づけます。該当するシナリオは次のとおりです。
#サービス指向の後の計画- #マンパワーと初期段階の思考の両方が迅速な開発を維持することを希望するシナリオ
- #と Git SubTree と SubModule の違い
実際、これら 3 つのメソッドはすべて、1 つのプロジェクトを別のプロジェクトのクラス ライブラリとして使用します。 SubTree と SubModule は Git ソリューションです。 Composer は PHP 言語のソリューションであり、プロジェクトを別のプロジェクトに追加する機能に加え、バージョンの追加や依存関係の解決などのソリューションを提供します。プロジェクトが PHP である場合は、Composer を使用することが間違いなくより良い選択です。
後のプロトコル サービス化
mapService を後でプロトコル サービス指向にしたい場合は、mapService プロジェクトを SDK に簡素化できます。ロジック、更新するには、composer update を使用するだけです。
サービスの登録と検出
ここで私が呼ぶいわゆる「サービス クラス ライブラリ」は、サービス登録の問題を解決しません。その方法を知る方法はありません。多くのプロジェクトが私のサービスを使用しています。これには追加のプロセス作業が必要になる場合があります。
以上がComposer+Git が「サービス クラス ライブラリ」を作成する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Composerは、Composer.jsonファイルを介してプロジェクト依存関係を管理するPHP依存関係管理ツールです。 1. ComposerInitを使用して、プロジェクトを初期化します。 2. ComposerRequireGuzzlehttp/Guzzleなどの依存関係を追加します。 3.高度な使用法には、プライベートリポジトリの構成とスクリプトフックの使用が含まれます。 4.依存関係の競合などの一般的なエラーは、ComposerWhy-Notコマンドを介してデバッグできます。 5. ComposerInstall-Prefer-Distを使用し、定期的に依存関係を更新するには、パフォーマンスの最適化をお勧めします。

Composerは、自動化された依存関係解析を通じて、PHPプロジェクトの依存関係を簡素化します。 1)Composer.jsonを読んで、依存関係の要件を解決します。 2)バージョンの競合を処理するための依存関係ツリーを構築します。 3)PackagistからVendorディレクトリへの依存関係をダウンロードしてインストールします。 4)Composer.Lockを生成して、依存関係の一貫性を確保し、それにより開発効率を向上させます。

作曲家では、AIは主に、依存関係の推奨、依存関係の競合解決、コードの品質改善を通じて、開発効率とコードの品質を改善します。 1。AIは、プロジェクトのニーズに応じて適切な依存関係パッケージを推奨できます。 2。AIは、依存関係の競合に対処するためのインテリジェントなソリューションを提供します。 3。AIはコードをレビューし、コードの品質を改善するための最適化の提案を提供します。これらの機能を通じて、開発者はビジネスロジックの実装にもっと集中できます。

作曲家は、音楽の構造を考案し、楽器の組み合わせを選択し、他のミュージシャンとの仕事を含む音楽作品を作成することで、感情を表現したり、物語を語ったり、物語を表現したり、アイデアを表現したりする人々です。 1)作曲家は、創造プロセス中に4つの概念、創造、修正、改善の段階を経ます。 2)作品の質と効果を確保するために、ハーモニー、カウンターポイント、メロディーなどの音楽理論を習得する必要があります。

Composerは、PHPの依存関係管理ツールであり、Composer.jsonおよびComposer.Lockファイルを介してプロジェクトの依存関係を管理しています。 1.コンポーザーのインストール:特定のコマンドを実行し、composer.pharをシステムパスに移動します。 2。Composerの更新:ComposelSelf-Updateコマンドを使用します。 3。依存関係管理:ComposerRequireコマンドを介して依存関係を追加し、関連するファイルを自動的に更新し、パッケージをダウンロードします。

AIは、コードの生成と分析において重要な役割を果たします。1)GitHubのCopilotなどの機械学習とNLPを通じてコードを生成します。 2)コード分析を実行し、Sonarqubeなどのバグと最適化の提案を特定します。 3)開発効率とコードの品質を改善しますが、手動のレビューと最適化が必要です。

作曲家自体にはAI機能は含まれていませんが、AIツールによって強化できます。 1)AIはComposer.jsonファイルを分析でき、依存関係を最適化し、バージョンの競合を予測することをお勧めします。 2)GithubcopilotなどのAI駆動型プラットフォームは、開発効率を改善するためのリアルタイムコード提案を提供できます。 AIツールを使用する場合、実際の状況と組み合わせて確認および調整する必要があります。

成功した作曲家の重要な特性には、1)豊かな創造性と想像力、2)技術的スキルとツールの堅実な習得が含まれます。これらの特性は、プログラミングにおける創造的で構造化された思考に似ており、作曲家が創造性を実現し、音楽の創造における作品を最適化するのに役立ちます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

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

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

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