目次
拡張機能とパッケージ
PEAR と PECL
Composer
Composer の使用法
总结

レビュー作成者

Dec 02, 2020 pm 03:07 PM
composer php

次のチュートリアル コラムでは、composer について説明し、composer について確認していきます。困っている友人の役に立てば幸いです。

レビュー作成者

#Composer は、PHP コミュニティによって推奨されている依存関係管理ツールです。 Composer は PHP にとって、npm は Node にとってのようなもので、現代の PHP 開発にはほぼ必須のスキルです。この記事では、Composer の関連概念と使用法を簡単に説明します。

拡張機能とパッケージ

関連する概念はフレームワークとライブラリです。フレームワークとライブラリの違いについては、以前に書いたこの記事を参照してください。

拡張機能とパッケージ2 つは非常によく似た概念です。 PHP の世界では、この 2 つは一般的に次のように理解され区別されます: エクステンションとモジュールは同等であり、C 言語で書かれた関数のコレクションです; パッケージとライブラリは同等で、主に C 言語で書かれています。 PHP によって実装される関数の一部であり、拡張機能はダイナミック リンク ライブラリ (dll など) の形式でロードされ、パッケージは require/include を通じてロードされます。ほとんどの場合、この 2 つを混合しても理解が困難になることはありません。

一般的な拡張機能には、GD、ZIP、XML、MySQLi、OPCache などが含まれます。一般的なパッケージには、PHPMailer、PHPOffice、HTMLPurifier などが含まれます。

PEAR と PECL

Composer が普及する前は、PEAR と PECL の 2 つのツール (コミュニティ) が PHP 開発者によく知られていました。 PEAR は PHP Extension and Application Repository の略で、公式 Web サイトは http://pear.php.net、PECL は PHP Extension Community Library の略で、公式 Web サイトは http://pecl.php.net です。

この 2 つの違いは拡張機能とパッケージによって区別できます: PECL ホスティング拡張機能、ソース コードは主に APC、AMPQ などの C ファイルです; PEAR ホスティング パッケージ、機能は PHP で実装されます。 PHP CodeSniffer、HTTP Request など。;PEAR は pear コマンドに対応し、PECL は pecl コマンドに対応します。これら 2 つのコマンドを使用して、拡張機能とパッケージをインストールおよび管理できます (pear の build/pickleサブコマンドは PECL で拡張機能をコンパイルすることもできます)。二人はお互いを補い合っており、公式サイトでは姉妹のような関係であると説明されている。

PECL は公式拡張の補足であり、現在もアクティブであり、いくつかの優れた拡張は公式拡張となる可能性があります。ハン・ティエンフェン・マスターのスウール拡張もPECLでホストされており、中国では非常によく知られています。それに比べれば、PEAR は過去のものです。 PEAR2 と Pyrus (PHP5.3 に基づいて構築された次世代 PEAR パッケージ インストール ツール、公式 Web サイト http://pear2.php.net) の登場により、PEAR を救うことができなくなりました。 PEAR の衰退に伴い、この記事の主人公である Composer が台頭します。

PEAR は「再利用可能な PHP コンポーネントを提供する」という位置づけで、開発者に機能パッケージを一元的に提供します。集中リリース方式はコードの品質は確保できるものの、レビューに合格したパッケージしかリリースできないためメンテナンスに不便があり、パッケージの陳腐化現象も深刻です。 PEAR によってインストールされるパッケージはグローバルであり、依存パッケージをプロジェクトごとにインストールすることはできません。権限のないユーザーが依存パッケージを自分でインストールすることはできません。その他の欠点としては、依存関係の管理が不十分であることが挙げられます。 Github の人気と Composer の登場により、パッケージ管理は Composer の時代に入りました。 PEARは歴史的使命を終えましたので、安心してご利用いただけます。

Composer

厳密に言えば、Composer はパッケージ マネージャーではなく、依存関係管理ツールとして位置付けられます。 Composer の中国語 Web サイトでは、Composer の働きを次のように紹介しています:

Composer は次のように問題を解決します:

a) いくつかのライブラリに依存するプロジェクトがあります。

b) これらのライブラリの一部は他のライブラリに依存しています。

c) あなたは何に依存しているかを宣言します。

d) Composer は、どのバージョンのパッケージをインストールする必要があるかを判断し、それらをインストールします (プロジェクトにダウンロードします)。

Composer は、PEAR で実行できることはすべて実行できます (PECL 拡張機能のインストールを含む)。 Composer はデフォルトでパッケージをプロジェクト ディレクトリにインストールし、通常のユーザーはそれを通常どおり使用できます (Composer は公式に、root として Composer コマンドを実行しないことを推奨しています)。ベスト プラクティス (つまり、有名な PSR 仕様。詳細については、 PHP-FIG 公式 Web サイト https://www.php-fig.org) は、PHP コミュニティでのコーディング スタイルの標準化を大幅に促進します。Composer は、誰でもコード パッケージを公開できる分散型プラットフォームです。 PEAR の後継として、Composer のパフォーマンスはコミュニティのテストに耐え、依存関係管理の事実上の標準ツールとなっています。

Composer は現在巨大なエコシステムを形成しており、量の点では Composer のパッケージは PEAR をはるかに上回っています。誰でもレビューなしで自由にパッケージを公開できるため、Composer エコシステム内のパッケージには、不均一なコード品質、さまざまなコード スタイル、バックドアの脆弱性などの隠れた懸念がある可能性があります。さらに、Composer の依存関係管理はプロジェクトに基づいており、同じパッケージがマシンに複数回インストールされる可能性があります。全体として、Composer は PHP 開発エコシステムを大きく変え、コード交換とコミュニティ開発を促進しました。

Composer の使用法

Composer はプロジェクトの依存関係を管理するために生まれており、プロジェクト内の Composer.json ファイルがその作業の基礎となります。ファイルの最も重要な部分は、Composer にインストールする予定のパッケージとそのバージョンを通知する require セクションです。例:

{
    "name": "tlanyan/foo",
    "version": "1.0.0",
    ....
    "require": {
        "php": ">=5.4.0",
        "yiisoft/yii2": ">=2.0.6",
        "yiisoft/yii2-swiftmailer": "*",
        "yiisoft/yii2-redis": ">=2.0.0",
        "smarty/smarty": "< =3.1.25",
        "yiisoft/yii2-smarty": ">=2.0.0",
        "phpoffice/phpexcel": ">=1.8.0",
        "tecnickcom/tcpdf": "~6.2.0"
    },
    ....
}
ログイン後にコピー

然后运行composer install命令,Composer会自动分析依赖,安装最合适的包到vendor目录下。加-v(-vv, -vvv)选项会打印命令执行过程中的详细信息。安装完毕后,vendor目录下会生成autoload.php文件。在项目的入口文件中包含此文件: require __DIR__ . "/vendor/autoload.php";,接下来便可在项目的任何地方引用依赖包中的接口和类。

install命令,Composer提供了许多其他命令管理依赖。常用的命令场景包括:查找依赖、引入依赖、安装依赖、更新依赖。分别对应的命令是:

  1. composer search: 根据关键字查找依赖包,例如查找本人发布的包:composer search tlanyan。该命令等同于上https://packagist.org进行包查找;
  2. composer require: 引入依赖,声明项目或者全局(global,用户名全局,非系统全局)依赖某个包, 例如声明需要swiftmailer包: composer require [global] "swiftmailer/swiftmailer:dev-master";该命令更新composer.json文件,并默认立即安装依赖(--no-update选项可阻止默认安装);效果等同于编辑composer.json文件,然后执行install命令;
  3. composer install:安装composer.json声明的依赖包,最终安装的依赖包版本可能取决于有无composer.lock文件;
  4. composer update: 更新依赖到最新版本,相当于删除composer.lock文件后执行composer install

以上四条命令涵盖使用Composer的大部分场景。以下是几个常用的辅助命令,与依赖分析相关:

  1. composer info: 查看安装的依赖包信息,与composer show等价;
  2. composer dumpautoload: 加-o选项可导出优化的加载器;
  3. composer why(-not): 查看(不)安装某个包的原因。

总结

从拷贝第三方代码到项目中(1994),到PEAR安装依赖包(1999),再到Composer兴起(2012),PHP社区经历了将近20年的探索。PHP这门古老的语言,也在不断的发展更新,在web领域一直发光发热。Composer作为目前PHP包依赖管理的最佳工具,值得每一位PHP开发人员掌握。

以上がレビュー作成者の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Laravelは紹介例 Laravelは紹介例 Apr 18, 2025 pm 12:45 PM

Laravelは、Webアプリケーションを簡単に構築するためのPHPフレームワークです。次のような強力な機能を提供します。インストール:Laravel CLIを作曲家にグローバルにインストールし、プロジェクトディレクトリにアプリケーションを作成します。ルーティング:ルート/web.phpのURLとハンドラーの関係を定義します。ビュー:リソース/ビューでビューを作成して、アプリケーションのインターフェイスをレンダリングします。データベース統合:MySQLなどのデータベースとのすぐ外側の統合を提供し、移行を使用してテーブルを作成および変更します。モデルとコントローラー:モデルはデータベースエンティティを表し、コントローラーはHTTP要求を処理します。

クラフトCMSのキャッシングの問題を解決する:Wiejeben/Craft-Laravel-Mixプラグインの使用 クラフトCMSのキャッシングの問題を解決する:Wiejeben/Craft-Laravel-Mixプラグインの使用 Apr 18, 2025 am 09:24 AM

CraftCMSを使用してWebサイトを開発する場合、特にCSSやJavaScriptファイルを頻繁に更新する場合、リソースファイルのキャッシュ問題が発生することがよくあります。古いバージョンのファイルがブラウザによってキャッシュされ、ユーザーが最新の変更を表示しないようにすることがあります。この問題は、ユーザーエクスペリエンスに影響を与えるだけでなく、開発とデバッグの難しさを高めます。最近、プロジェクトで同様のトラブルに遭遇し、いくつかの調査の後、プラグインWiejeben/Craft-Laravel-Mixが見つかりました。

ドクトリンエンティティのシリアル化効率を改善:Sidus/Doctrine-Serializer-Bundleの適用 ドクトリンエンティティのシリアル化効率を改善:Sidus/Doctrine-Serializer-Bundleの適用 Apr 18, 2025 am 11:42 AM

多数の教義エンティティを含むプロジェクトに取り組んでいるとき、私は厳しい問題を抱えていました。エンティティがシリアル化され、脱必要にされるたびに、パフォーマンスは非常に非効率的になり、システムの応答時間が大幅に増加します。複数の最適化方法を試しましたが、うまくいきません。幸いなことに、Sidus/Doctrine-Serializer-Bundleを使用することで、この問題をうまく解決し、プロジェクトのパフォーマンスを大幅に改善しました。

PHPの継続的な使用:その持久力の理由 PHPの継続的な使用:その持久力の理由 Apr 19, 2025 am 12:23 AM

まだ人気があるのは、使いやすさ、柔軟性、強力なエコシステムです。 1)使いやすさとシンプルな構文により、初心者にとって最初の選択肢になります。 2)Web開発、HTTP要求とデータベースとの優れた相互作用と密接に統合されています。 3)巨大なエコシステムは、豊富なツールとライブラリを提供します。 4)アクティブなコミュニティとオープンソースの性質は、それらを新しいニーズとテクノロジーの傾向に適応させます。

Composerを使用してLaravelアプリケーションのセキュリティを改善する方法:Wiebenieuwenhuis/Laravel-2FAライブラリのアプリケーション Composerを使用してLaravelアプリケーションのセキュリティを改善する方法:Wiebenieuwenhuis/Laravel-2FAライブラリのアプリケーション Apr 18, 2025 am 11:36 AM

Laravelアプリケーションを開発するとき、私は一般的ではあるが難しい問題に遭遇しました。ユーザーアカウントのセキュリティを改善する方法です。サイバー攻撃の複雑さの増加により、単一のパスワード保護は、ユーザーのデータのセキュリティを確保するのに十分ではなくなりました。いくつかの方法を試しましたが、結果は満足のいくものではありませんでした。最後に、コンポーザーを介してwiebenieuwenhuis/laravel-2FAライブラリをインストールし、アプリケーションに2因子認証(2FA)を大幅に追加し、セキュリティを大幅に改善しました。

Composerを使用してFecmall Advanced Projectテンプレートをすばやく構築する方法 Composerを使用してFecmall Advanced Projectテンプレートをすばやく構築する方法 Apr 18, 2025 am 11:45 AM

eコマースプラットフォームを開発する場合、適切なフレームワークとツールを選択することが重要です。最近、機能が豊富なeコマースのウェブサイトを構築しようとしていたとき、私は困難な問題に遭遇しました。スケーラブルで完全に機能的なeコマースプラットフォームをすばやく構築する方法です。複数のソリューションを試してみて、FecmallのAdvanced Projectテンプレート(Fecmall/FBBCBase-App-Advanced)を選択することになりました。 Composerを使用することにより、このプロセスは非常にシンプルで効率的になります。作曲家は次のアドレスを通して学ぶことができます:学習アドレス

作曲家を使用してJSONスキーマの検証の問題を解決する方法 作曲家を使用してJSONスキーマの検証の問題を解決する方法 Apr 18, 2025 am 11:51 AM

Symfonyベースのアプリケーションを開発する際には、JSONデータ形式を効果的に検証する方法を開発する際に、トリッキーな問題を抱えています。最初は、手動検証コードを使用しようとしましたが、これは複雑であるだけでなく、エラーが発生しやすいものでもありました。いくつかの調査の後、私はPtyhard/Json-Schema-Bundleという作曲家パッケージを発見しました。

Laravelのバージョン番号を表示する方法は? Laravelのバージョン番号を表示する方法 Laravelのバージョン番号を表示する方法は? Laravelのバージョン番号を表示する方法 Apr 18, 2025 pm 01:00 PM

Laravelフレームワークには、開発者のさまざまなニーズを満たすためにバージョン番号を簡単に表示するための組み込みの方法があります。この記事では、Composer Command Lineツールの使用、.ENVファイルへのアクセス、PHPコードを介したバージョン情報の取得など、これらの方法について説明します。これらの方法は、Laravelアプリケーションのバージョン化の維持と管理に不可欠です。

See all articles