搜尋
首頁開發工具composerComposer 系列之 autoload 詳解

Composer 系列之 autoload 詳解

Aug 21, 2019 pm 02:20 PM
composer

下面由composer使用教程栏目为大家讲解Composer系列之autoload文件,希望对需要的朋友有所帮助!

Composer 系列之 autoload 詳解

简介

Composer 是 PHP 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。

对于类库的自动加载,Composer 生成了一个 vendor/autoload.php 文件。引入这个文件,就能得到一个免费的自动加载支持,这种感觉真是棒极了~

本文主要是介绍如何利用 Composer 自带的自动加载机制,加载本地自定义的包(即不是来自于 packagist)。

使用

在 composer.json 文件中的 autoload 字段中添加自己的 autoloader。

目前 Composer 支持四种自动加载映射的方式:

PSR-0 autoloading
PSR-4 autoloading
classmap generation
files

下面只介绍 PSR-4,为什么?因为它足够方便好用(当你添加类时不需要重新生成 autoloader)。详细请查看 自动加载 - 参考

PSR-4(推荐)

{
    "autoload": {
        "psr-4": {
            "First\\": "src/",
            "Temp\\": "lib/"
        }
    }
}

上面的代码采用 PSR-4 规范,该规范包含了 PHP 最新的自动加载标准,它要求必须使用 namespace (命名空间)的方式。

First\\ 表示命名空间,必须以 \\ 结尾,避免相似的命名空间导致冲突,若包含子命名空间,可以这样表示:First\\Second\\。

src/ 表示命名空间所在目录为与 Composer 的 vendor 目录同级的 src 目录,如下所示:

First/
|---examples/
    |---get.php
|---src/
    |---Curl.php
|---vendor/
    |---composer/
    |---autoload.php
|---composer.json

如果需要在多个目录下搜索相同的命名前缀,可以用一个数组提供:

{
    "autoload": {
        "psr-4": {"First\\": ["src/", "lib/"]}
    }
}

修改完 composer.json 的 autoload 字段后需要更新一下 Composer 的自动加载类:

composer dumpautoload -o

对应 Curl.php 的命名空间如下表示:

<?php
namespace First;
class Curl
{
}

引用 Curl.php 的方式如下:

<?php
require &#39;../vendor/autoload.php&#39;;
use First\Curl;
$curl = new Curl();
...
...

小结

之前一直以为 namespace 是 PHP 内置好的,只需要在某个类上声明一下某个命名空间,在调用这个类的地方 use 一下就好。。。

直到前几天脱离框架,单独写了几个类,然后被 xxx class not found 错误折磨到怀疑人生,才明白需要有个 autoloader 才行。

题外话

现在 Composer 已经成为 PHP 的依赖管理标杆,多利用这个工具为自己的开发带来方便。

框架能大大减少开发成本,但有时候不利于个人技术的提升。在使用热门框架时,多看看框架的代码,不仅帮助自己理解掌握框架,也能带来许多编程思想和技术上的提高。

以上是Composer 系列之 autoload 詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:learnku。如有侵權,請聯絡admin@php.cn刪除
作曲家的目的:管理PHP中的項目依賴性作曲家的目的:管理PHP中的項目依賴性Apr 30, 2025 am 12:01 AM

我們需要Composer因為它能有效管理PHP項目的依賴,避免版本衝突和手動管理庫的麻煩。 Composer通過composer.json聲明依賴,並使用composer.lock確保版本一致,簡化了依賴管理過程,提高了項目穩定性和開發效率。

作曲家:通過AI的幫助開發PHP作曲家:通過AI的幫助開發PHPApr 29, 2025 am 12:27 AM

AI可以幫助優化Composer的使用,具體方法包括:1.依賴管理優化:AI分析依賴關係,建議最佳版本組合,減少衝突。 2.自動化代碼生成:AI生成符合最佳實踐的composer.json文件。 3.代碼質量提升:AI檢測潛在問題,提供優化建議,提高代碼質量。這些方法通過機器學習和自然語言處理技術實現,幫助開發者提高效率和代碼質量。

成為作曲家:培訓,教育和經驗成為作曲家:培訓,教育和經驗Apr 28, 2025 am 12:11 AM

要成為一名作曲家,需掌握音樂理論、和聲學、對位法,並熟悉樂器音色和演奏技巧。作曲家通過音樂表達情感和故事,創作過程涉及從想法到作品的構建和完善。

確定作曲家:基本要素確定作曲家:基本要素Apr 27, 2025 am 12:27 AM

識別作曲家的關鍵步驟包括:1)分析作曲家的風格特徵,如貝多芬的戲劇性和力量;2)了解作曲家的歷史背景和文化影響,如巴赫的巴洛克時期風格;3)綜合分析作品的旋律、和聲、節奏和結構,避免僅依賴單一元素導致誤判。

作曲家:PHP開發中AI的未來作曲家:PHP開發中AI的未來Apr 26, 2025 am 12:10 AM

Composer'sfutureinPHPdevelopmentwithAIincludes:1)AI-enhanceddependencymanagementforsuggestinglibraries,2)AI-drivencodegenerationfortailoredboilerplate,and3)predictivemaintenanceforupdatesandpatches,butfaceschallengeslikedataprivacyandAIbias.

作曲家的技能和素質:概述作曲家的技能和素質:概述Apr 25, 2025 am 12:03 AM

成為一名成功的作曲家需要具備音樂理論、樂器演奏和音響設計等技能,以及敏銳的靈感捕捉和不斷的作品修改能力。作曲家通過這些技能和特質,將情感和思想轉化為音樂作品,激發聽眾共鳴。

作曲家的資格:評估能力作曲家的資格:評估能力Apr 24, 2025 am 12:15 AM

Composer使用熟練程度可以通過以下四個方面評估:1)理解基礎概念,如包、依賴和版本控制;2)掌握核心功能,包括解析composer.json、解決依賴、下載包和生成autoload文件;3)熟練使用基本和高級命令,如composerinstall、update、require和dump-autoload;4)應用最佳實踐,如使用composer.lock文件、優化autoload配置和定期清理緩存。

作曲家:利用AI進行自動任務作曲家:利用AI進行自動任務Apr 23, 2025 am 12:03 AM

使用Composer結合AI可以實現自動化任務。 1.Composer通過配置文件管理依賴,AI可優化版本選擇。 2.在實際應用中,AI可用於自動化依賴管理、測試和部署。 3.性能優化包括依賴加載和緩存策略。 4.需注意版本衝突和AI誤判等問題。通過這些方法,AI能提升工作效率和智能化程度。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!