検索
ホームページ開発ツールcomposer知らない Composer をロードする方法

我们都知道Composer是现代PHP框架(Yii2、Laravel...)的基石,有了Composer后我们开发是一件多么的爽的事情。那么Composer加载方式你知道多少呢?下面由composer使用教程栏目给大家介绍你不知道的composer加载方式。

知らない Composer をロードする方法

本文仅仅关注Composer的自动加载。

我们以Yii2为例,当我们通过Composer生成了一个Yii2程序后,会在vendor下建立一个autoload.php文件,它负责帮我们自动加载vendor内的各种库(yii2核心库也在vendor内,你懂得!)。

而你一定知道Yii2的入口文件index.php有一行。

require(__DIR__ . '/../vendor/autoload.php');

由此可见,Yii2对Composer的友好程度,也难怪~孤木不成林,Yii2也要靠无数个Composer扩展枝干才能变成参天大树。

下面开始正式讲解Composer的autoload,告诉你各式各样扩展安装后,我们并没有使用include / require,那么Composer是如何帮我们找到他们的那?

目前为止,Composer一共支持4种自动加载方式

PSR-0
PSR-4
class-map
直接包含file

这四种方式足以让Composer涵盖地球上所有的PHP第三方扩展库。

PSR是一套PHP开发标准,现在大多数主流框架都在支持,工兵连已经开专题分享PSR干货。

PSR-4

PSR-4是Composer推荐使用的一种方式,因为它更易使用并能带来更简洁的目录结构。在一个扩展的composer.json里是这样进行配置的:

{
    "autoload": {
        "psr-4": {
            "Foo\\": "src/",
        }
    }
}

key和value就定义出了namespace以及其对应的目录映射。按照PSR-4的规则,当试图自动加载"Foo\Bar\Baz"类的使用,会去寻找"srcBarBaz.php"这个文件,如果它存在则加载,要注意的是此时"Foo\"并不会出现在文件路径中。

而composer.json这样的配置会被Composer转换成namespace与文件目录的MAP形式,并存在vendor/composer/autoload_psr4.php文件中,所以如果你安装的某个扩展自动加载是PSR-4形式,你可以在autoload_psr4.php找到它的真实路径。

PSR-0

这是一个已经过时的标准,那是在遥远的PHP5.2时代,你我都知道,PHP5.3之后才有了类似namespace这样的高级属性,所以PSR-0更多是考虑

有点蒙圈么?那我们来看代码你就明白了。

{
    "autoload": {
        "psr-0": {
            "Foo\\": "src/",
        }
    }
}

我们来分析这个扩展的加载方式,什么是伪namespace那?当我们用这个库的时候

$model = new Foo_Bar_Baz();

对的,PSR-0的时代,有很多以下划线分隔的类名,它代表。。。它代表。。。

src/Foo/Bar/Baz.php

聪明的你一定明白什么是伪namespace了吧,通过命名的下划线来映射目录结构。

哎,那个时代的标准制定者们也真心不容易呀。

Class-map方式

{
    "autoload": {
        "classmap": ["src/", "lib/"]
    }
  }

这个加载方式比较容易理解,当Composer开始安装扩展的时候,会根据composer.json里的这个 autoload 告诉的方式classmap,来遍历src、lib目录然后将里面的类文件和其路径一一对应,存放到vendor/composer/autoload_classmap.php内。

例如src/下有一个BaseController类,那么在autoload_classmap.php文件中,就会生成这样的配置:

'BaseController' => $baseDir . '/src/BaseController.php'

若你还不懂,去看看autoload_classmap.php吧。

File方式

有了上面这些加载方式还不够么? 是的,还会有一些供全局使用的比如帮助等这样函数,那么好吧,我们就讲这些文件直接包含进来好了。

{
    "autoload": {
        "files": ["src/MyLibrary/functions.php"]
    }
}

Composer安装扩展后会将其放到

vendor/composer/autoload_files.php

到此刻,世界清静了,Composer可以加载我大PHP世界的各种库,只要你想,就可以自动加载。

以上が知らない Composer をロードする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はsegmentfaultで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
作曲家とAI:PHP開発における新しい可能性作曲家とAI:PHP開発における新しい可能性Apr 19, 2025 am 12:03 AM

AIと作曲家の組み合わせは、PHP開発の効率とセキュリティを改善できます。具体的には次のように反映されています。1。依存関係分析と最適化:AIは依存関係を予測し、競合を減らすことができます。 2。自動化されたセキュリティチェック:AIはセキュリティの脆弱性を特定することができ、それらを更新することをお勧めします。 3。コード生成と最適化:AIは、関連するコードを自動的に生成および最適化できます。

DICR/YII2-GOOGLEを使用して、Yii2にGoogle APIを統合しますDICR/YII2-GOOGLEを使用して、Yii2にGoogle APIを統合しますApr 18, 2025 am 11:54 AM

vProcesserazrabotkiveb-Enclosed、する、するまみ、するまで。 leavallysumballancefriablancefaumdoptomatification、čtokazalovnetakprosto、kakaožidal.posenesko

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

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

作曲家を使用して、推奨システムのジレンマを解決する:Andres-Montanez/推奨作曲家を使用して、推奨システムのジレンマを解決する:Andres-Montanez/推奨Apr 18, 2025 am 11:48 AM

eコマースのWebサイトを開発するとき、私は困難な問題に遭遇しました。ユーザーにパーソナライズされた製品の推奨事項を提供する方法です。当初、私はいくつかの簡単な推奨アルゴリズムを試しましたが、結果は理想的ではなく、ユーザーの満足度も影響を受けました。推奨システムの精度と効率を改善するために、より専門的なソリューションを採用することにしました。最後に、Andres-Montanez/Adcumentations Bundleを介してAndres-Montanez/Bundleをインストールしました。これは、問題を解決しただけでなく、推奨システムのパフォーマンスを大幅に改善しました。次の住所から作曲家を学ぶことができます。

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を使用することにより、このプロセスは非常にシンプルで効率的になります。作曲家は次のアドレスを通して学ぶことができます:学習アドレス

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

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

Composerを使用して、Laravelプロジェクトのエラーログの問題を解決しますComposerを使用して、Laravelプロジェクトのエラーログの問題を解決しますApr 18, 2025 am 11:39 AM

Laravelプロジェクトを開発する場合、エラーログの管理は非常に重要なリンクです。最近、私はプロジェクトで問題に遭遇しました。すべてのタイプのエラーを効率的にキャプチャして記録し、これらのエラーメッセージをタイムリーに処理できるようにする方法です。いくつかの調査の後、lukeboy25/errorloggerパッケージを見つけました。作曲家を通じてインストールされており、エラーログの管理プロセスを大幅に簡素化できます。次の住所から作曲家を学ぶことができます。

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

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

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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境