Composer を使用して依存関係を管理する方法を教える
composer の次のチュートリアル コラムでは、Composer を使用して依存関係を管理する方法を紹介します。困っている友人の役に立てば幸いです。
composer はもともと、PHP フレームワークである Symfony のパッケージの依存関係を管理するために設計されたツールでしたが、シンプルで使いやすいため、現在は独立したオープンソース プロジェクトになりました。 。多くのフレームワークとライブラリは、composer を使用してインストールおよび管理できるようになりました。
実は、PHP には、以前からそのようなパッケージの依存関係管理ツールが存在していました。それが PEAR です。しかし、PEARは設定が複雑すぎて、プロジェクトごとに依存関係を設定するのが難しいため、現在ではComposerが広く愛用されています。
この紹介はユーザーのみを対象としているため、パッケージ開発者が知っておく必要がある部分はカバーされません。
* インストール
Windows ユーザーの場合は、インストール ファイルをダウンロードしてインストールを実行するだけです。
https://getcomposer.org/Composer-Setup.exe
必要な場合は、手動でインストールするには、公式 Web サイトのガイドラインを参照してください:
http://getcomposer.org/doc/00-intro.md#installation-windows
UNIX Like システムのユーザーの場合は、次のコマンドでインストールできます: (curl を最初にインストールする必要があります)
curl -sS https://getcomposer.org/installer | php
インストール プログラムは PHP 設定を確認し、composer.phar を現在のディレクトリにダウンロードします。 Composer を実行するには、
php composer.phar
を実行するか、単に実行可能ファイル
>mv composer.phar composer >chmod +x composer
に変更してから ./composer を実行します。
ただし、ファイルを別の作業ディレクトリに置く必要があり、実行権限に問題がない場合は、ファイルを /usr/local/bin に直接コピーすることもできます。
#* 依存関係の設定
プロジェクトで Composer を使用する場合は、まず、使用するパッケージとバージョンを指定する Composer.json ファイルを生成する必要があります。たとえば、phpmailer を使用してレターを送信する必要がある場合、{ "require": { "phpmailer/phpmailer": "~5.2.7" } }
eng-Hsu-Pingteki-MacBook-Air:2-1a fillano$ composer install Loading composer repositories with package information Installing dependencies (including require-dev) - Installing phpmailer/phpmailer (v5.2.7) Downloading: 100% Writing lock file Generating autoload files Feng-Hsu-Pingteki-MacBook-Air:2-1a fillano$
Feng-Hsu-Pingteki-MacBook-Air:2-1a fillano$ ls -l total 16 -rw-r--r-- 1 fillano staff 66 10 11 18:15 composer.json -rw-r--r-- 1 fillano staff 2330 10 11 18:16 composer.lock drwxr-xr-x 5 fillano staff 170 10 11 18:16 vendor
Feng-Hsu-Pingteki-MacBook-Air:2-1a fillano$ cat composer.lock { "_readme": [ "This file locks the dependencies of your project to a known state", "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file" ], "hash": "065c23f92d5ae579cb91beff67f41196", "packages": [ { "name": "phpmailer/phpmailer", "version": "v5.2.7", "source": { "type": "git", "url": "https://github.com/PHPMailer/PHPMailer.git", "reference": "8717a79565b2c0ed67f851d70e1949febdf3b226" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/8717a79565b2c0ed67f851d70e1949febdf3b226", "reference": "8717a79565b2c0ed67f851d70e1949febdf3b226", "shasum": "" }, "require": { "php": ">=5.0.0" }, "require-dev": { "phpdocumentor/phpdocumentor": "*", "phpunit/phpunit": "*" }, "type": "library", "autoload": { "classmap": [ "class.phpmailer.php", "class.pop3.php", "class.smtp.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "LGPL-2.1" ], "authors": [ ....下略
Feng-Hsu-Pingteki-MacBook-Air:2-1a fillano$ tree vendor vendor ├── autoload.php ├── composer │ ├── ClassLoader.php │ ├── autoload_classmap.php │ ├── autoload_namespaces.php │ ├── autoload_real.php │ └── installed.json └── phpmailer └── phpmailer ├── LICENSE ├── PHPMailerAutoload.php ├── README.md ├── changelog.md ├── class.phpmailer.php ├── class.pop3.php ├── class.smtp.php ├── composer.json ├── docs │ ├── Callback_function_notes.txt │ ├── DomainKeys_notes.txt │ ├── Note_for_SMTP_debugging.txt │ ├── extending.html │ ├── faq.html │ ├── generatedocs.sh │ └── pop3_article.txt ...下略
<?php require 'vendor/autoload.php'; $phpmailer = new PHPMailer;
*composer.json
ユーザーにとって、このファイルは主に依存関係を維持するために使用されます。ファイルの「require」属性にオブジェクトを追加するだけです。属性名はパッケージ名、値はバージョンです。パッケージ名は 2 つの部分に分かれており、最初の部分はベンダー、2 番目の部分は実際のパッケージ名であり、「\」で区切られています。バージョンにはいくつかのルールがあります。- バージョン番号を直接指定します (例: 2.7.3
- メイン バージョン番号を指定した後、マイナー バージョン番号を指定するには、「*」を使用します。たとえば、2.7.* は、バージョン番号が 2.7.0 以上であることを意味します。2.8.0 未満のバージョン ## を使用します。 、>=、!=、<=、<バージョン番号の前で待機するということは、これらの比較演算子を使用してバージョン番号ルールを指定することを意味します。複数のルールを使用して、「,」
# で区切ることができます。
#バージョン番号の前に「~」を使用して、次のバージョン番号が変更される前のバージョンを示します。たとえば、~2.7 は、バージョンが 2.7 以上 3.0 未満であることを意味します。- バージョン番号の後に、2.7.* などのさまざまな安定性フラグを追加することもできます。 @ベータ。使用できるフラグは次のとおりです: dev、alpha、beta、RC、stable
- バージョンを指定した後、composer install を実行すると、パッケージの最新バージョンが次のようにインストールされます。指定されたバージョンのルール。
パッケージの最初のインストール後、インストールされたパッケージの情報を記録するこのファイルが生成されます。このファイルの実際の機能は、ディレクトリにこのファイルが存在する場合、インストールの実行時に更新されたバージョンを検索せず、このファイルに記録されているバージョンに従ってインストールします。スイートの新しいバージョンは現在使用されているバージョンと互換性がない可能性が高く、同じバージョンを使用しないとシステムの安定性を確保することが困難になるため、この設計は重要です。以前は、pear を使用してパッケージを管理する場合、注意しないと、アップグレードによる悲劇が発生する可能性がありました。 さらに、このファイルがバージョン管理に追加される限り、すべての開発者ディレクトリにもこのファイルが含まれるため、全員が使用するパッケージのバージョンが一貫し、開発中にパッケージを使用する必要性が減ります。バージョンの違いによって引き起こされるプログラムの互換性の問題。
#* ベンダー ディレクトリ
#
所有套件都会放置在这个目录,并且依照
* vendor/autoload.php
只要引用这个档案,就可以载入套件中所有对外公开的类别。基本上每个套件都会定义自己的autoload规则,在安装时,composer会把这些规则加入,这样透过autoload.php就可以直接使用所有已安装的类别。
=====
从这些地方可以看到,Composer这个套件管理工具,在设计上已经做了很周密的考量,只需要简单指定要使用的套件及版本,一个指令就可以安装完毕,引用一个胆案之后就能使用,这样真的非常方便。所以目前几乎所有的程式库以及Framework,应该都逐渐在套用这个工具了。未来在开发PHP程式,恐怕最基本的工具也就是composer。
以上がComposer を使用して依存関係を管理する方法を教えるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック









Composer は、次のような高度な機能を提供します。 1. エイリアス: 繰り返し参照するためのパッケージの便利な名前を定義します。 2. スクリプト: データベース テーブルの作成またはリソースのコンパイルに使用される、パッケージのインストール/更新時にカスタム コマンドを実行します。 、満足度制約、およびパッケージ エイリアスは、同じ依存関係バージョンに対する複数のパッケージの異なる要件を解決して、インストールの競合を回避します。

回答: PHP マイクロサービスは、アジャイル開発のために HelmCharts でデプロイされ、分離とスケーラビリティのために DockerContainer でコンテナ化されます。詳細説明: HelmCharts を使用して PHP マイクロサービスを自動的にデプロイし、アジャイル開発を実現します。 Docker イメージを使用すると、マイクロサービスの迅速な反復とバージョン管理が可能になります。 DockerContainer 標準はマイクロサービスを分離し、Kubernetes がコンテナの可用性とスケーラビリティを管理します。 Prometheus と Grafana を使用して、マイクロサービスのパフォーマンスと健全性を監視し、アラームと自動修復メカニズムを作成します。

PHP 配列をオブジェクトに変換する方法: stdClass クラスを使用する、json_decode() 関数を使用する、サードパーティ ライブラリ (ArrayObject クラス、Hydrator ライブラリなど) を使用する

PHP コードのバージョン管理: PHP 開発では一般的に 2 つのバージョン管理システム (VCS) が使用されます。 Git: 分散 VCS。開発者はコード ベースのコピーをローカルに保存し、共同作業やオフライン作業を容易にします。 Subversion: 集中型 VCS。コード ベースの唯一のコピーが中央サーバーに保存され、より詳細な制御が可能になります。 VCS は、チームが変更を追跡し、共同作業し、以前のバージョンにロールバックするのに役立ちます。

PHP でデータ構造を視覚化するための主なテクノロジは 3 つあります。 Graphviz: チャート、有向非巡回グラフ、デシジョン ツリーなどのグラフィカル表現を作成できるオープン ソース ツールです。 D3.js: インタラクティブなデータ駆動型の視覚化を作成し、PHP から HTML とデータを生成し、D3.js を使用してクライアント側で視覚化するための JavaScript ライブラリです。 ASCIIFlow: プロセスとアルゴリズムの視覚化に適した、データ フロー図のテキスト表現を作成するためのライブラリ。

PHPCI/CD は、ビルド、テスト、デプロイメントのプロセスを自動化し、開発効率とソフトウェアの品質を向上させる DevOps プロジェクトの重要なプラクティスです。一般的な PHPCI/CD パイプラインは次の段階で構成されます。 1) 継続的インテグレーション: コードが変更されるたびに、コードは自動的に構築され、テストされます。 2) 継続的デプロイ: テストおよび統合されたコードを実稼働環境に自動的にデプロイすることで、配信をスピードアップします。 PHPCI/CD パイプラインを実装すると、開発効率が向上し、ソフトウェアの品質が向上し、市場投入までの時間が短縮され、信頼性が向上します。

Redis キャッシュを使用すると、PHP 配列ページングのパフォーマンスを大幅に最適化できます。これは、次の手順で実現できます。 Redis クライアントをインストールします。 Redisサーバーに接続します。キャッシュ データを作成し、データの各ページをキー「page:{page_number}」を持つ Redis ハッシュに保存します。キャッシュからデータを取得し、大規模な配列での高コストの操作を回避します。

回答: PHPCI/CD を使用して、CI/CD パイプラインの設定、自動化されたテストおよび展開プロセスなどの迅速な反復を実現します。 CI/CD パイプラインのセットアップ: CI/CD ツールを選択し、コード リポジトリを構成し、ビルド パイプラインを定義します。自動テスト: 単体テストと統合テストを作成し、テスト フレームワークを使用してテストを簡素化します。実際のケース: TravisCI の使用: TravisCI をインストールし、パイプラインを定義し、パイプラインを有効にして、結果を表示します。継続的デリバリーを実装します。展開ツールを選択し、展開パイプラインを定義し、展開を自動化します。利点: 開発効率が向上し、エラーが減少し、納期が短縮されます。
