検索
ホームページ開発ツールcomposerComposer+Git が「サービス クラス ライブラリ」を作成する方法の詳細な説明

この記事は、composer のチュートリアル コラムによって、Composer が Git を組み合わせて「サービス クラス ライブラリ」を作成する方法を紹介するために書かれたものです。必要としている!

はじめに

私は今、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 ファイルに次のステートメントを追加しました。

Composer+Git が「サービス クラス ライブラリ」を作成する方法の詳細な説明

#mapService の combos.json は次のとおりです:

Composer+Git が「サービス クラス ライブラリ」を作成する方法の詳細な説明

この構成は、main1 プロジェクトに、mapService の Git アドレスを伝えます。のバージョンを使用する必要があります。

もちろん、次の点に注意する必要があります。

    dev-master は、mapService の master ブランチを直接使用することを意味します。 MapService に他のタグがある場合は、ここでタグ情報を使用できます。
  • repositories はプロジェクトのアドレスです
  • ここにあるサービスは、弊社が構築した GitLab 上に配置されています
  • mapService 以下の src フォルダーの名前空間は xxxx\\xxxx\\MapService\\ で、PSR-4 をサポートしています。
  • mapService は、illuminate/database
最後に使用するコンポーザーの更新を使用します - vvv は、必要な MapService をダウンロードして、ベンダー ディレクトリに配置できます。

更新と変更

エディターは main1 プロジェクト内にあります。mapService プロジェクトを編集および変更し、それを main1 プロジェクトのマスター ブランチにマージしたい場合は、 mapService では、vender/xxx/mapService ディレクトリに直接入力し、Git に対応する操作を実行します。これにより、コードを直接変更できるようになります。

独立した構成

この構造の組み合わせは、数千マイルの長行を完了するための最初のステップにすぎません。後ほど重要なことは、このサービスを作成するときに、mapService の独立性を維持するために、main1 内のすべてを使用しないように常に注意する必要があることです (独立性はサービス化の必要条件の 1 つです)。たとえば、私が最初に遭遇した問題は、構成ファイルを独立させる必要があるということでした。

私の実装方法は、mapService 内に直接 Config クラスを作成し、このクラスに直接設定を記述します。

この方法でこの構成ファイルが Git ライブラリに組み込まれるため、この構成ファイルの実装は少し面倒だと常々感じていました。しかし、これ以上良い解決策が思いつきません。 LaravelではServiceProviderを実装することでLaravelのconfigフォルダーにConfigを作成する方法がありますが、この方法はLaravelにのみ適用されます。普遍性なんてない。一方、サービスがどのデータベースを使用するかはそれ自体がサービスの一部であり、サービスの Git ライブラリにそれを置くこととは関係がないようです。

#ディレクトリ構造

Composer+Git が「サービス クラス ライブラリ」を作成する方法の詳細な説明ディレクトリ構造は上記のとおりです

Configs は設定ファイルを提供します
  • Contracts はインターフェイス プロトコルを提供します
  • Exceptions は例外を提供します
  • Supports はサードパーティのメソッドまたはクラス ライブラリを提供します
  • Models はデータベースとの対話を提供します
  • Node.php の実装 特定のインターフェイス
  • サービスについて最も重要なことは、インターフェイス プロトコルです。したがって、Contracts フォルダーを作成し、提供されるサービスとインターフェースします。

Composer+Git が「サービス クラス ライブラリ」を作成する方法の詳細な説明# インターフェイスの例外処理では、対話のためにエラー コードの代わりに例外を使用するようにする必要があります。そして、これらの例外は可能な限りカスタマイズする必要があります。このようにして、上位レベルでの統一処理の可能性があります。

考え方

私は、このアーキテクチャ モデルを PHP コード レベルのサービス指向モデルとして位置づけます。該当するシナリオは次のとおりです。

#サービス指向の後の計画
  • #マンパワーと初期段階の思考の両方が迅速な開発を維持することを希望するシナリオ
  • #と Git SubTree と SubModule の違い

実際、これら 3 つのメソッドはすべて、1 つのプロジェクトを別のプロジェクトのクラス ライブラリとして使用します。 SubTree と SubModule は Git ソリューションです。 Composer は PHP 言語のソリューションであり、プロジェクトを別のプロジェクトに追加する機能に加え、バージョンの追加や依存関係の解決などのソリューションを提供します。プロジェクトが PHP である場合は、Composer を使用することが間違いなくより良い選択です。

後のプロトコル サービス化

mapService を後でプロトコル サービス指向にしたい場合は、mapService プロジェクトを SDK に簡素化できます。ロジック、更新するには、composer update を使用するだけです。

サービスの登録と検出

ここで私が呼ぶいわゆる「サービス クラス ライブラリ」は、サービス登録の問題を解決しません。その方法を知る方法はありません。多くのプロジェクトが私のサービスを使用しています。これには追加のプロセス作業が必要になる場合があります。

以上がComposer+Git が「サービス クラス ライブラリ」を作成する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はjuejinで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
作曲家:PHPパッケージ管理の包括的なガイド作曲家:PHPパッケージ管理の包括的なガイドMay 11, 2025 am 12:17 AM

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

作曲家の行動:依存関係解決の自動作曲家の行動:依存関係解決の自動May 10, 2025 am 12:22 AM

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

AIおよび作曲家:コードの品質と開発の強化AIおよび作曲家:コードの品質と開発の強化May 09, 2025 am 12:20 AM

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

作曲家を定義するもの:役割の理解作曲家を定義するもの:役割の理解May 08, 2025 am 12:07 AM

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

作曲家:依存関係のインストール、更新、および管理作曲家:依存関係のインストール、更新、および管理May 07, 2025 am 12:07 AM

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

AI搭載の作曲家:コード生成と分析AI搭載の作曲家:コード生成と分析May 06, 2025 am 12:11 AM

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

作曲家:AI駆動のツールと統合作曲家:AI駆動のツールと統合May 05, 2025 am 12:11 AM

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

成功した作曲家の属性成功した作曲家の属性May 04, 2025 am 12:13 AM

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

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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

メモ帳++7.3.1

メモ帳++7.3.1

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

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

SublimeText3 英語版

SublimeText3 英語版

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