包开发
介绍
包是向 Laravel 添加功能的主要方式。 包可能是处理日期的好方法,例如 Carbon,也可能是允许您将文件与 Eloquent 模型相关联的包,例如 Spatie 的 Laravel 媒体库。
有不同类型的包。 有些包是独立的,这意味着它们可以与任何 PHP 框架一起使用。 Carbon 和 PHPUnit 是独立包的示例。 任何这些包都可以通过在你的 composer.json
文件中的要求来与 Laravel 一起使用。
另一方面,其他软件包专门用于 Laravel。 这些包可能包含专门用于增强 Laravel 应用程序的路由、控制器、视图和配置。 本指南主要涵盖了那些特定于 Laravel 的包的开发。
关于 Facades
在编写 Laravel 应用程序时,通常使用契约(Contracts)还是门面(Facades)并不重要,因为两者都提供了基本相同的可测试性级别。 但是,在编写包时,您的包通常无法访问 Laravel 的所有测试助手。 如果您希望能够像将包安装在典型的 Laravel 应用程序中一样编写包测试,您可以使用 Orchestral Testbench 包。
包发现
在 Laravel 应用程序的 config/app.php
配置文件中,providers
选项定义了 Laravel 应该加载的服务提供者列表。 当有人安装您的软件包时,您通常希望您的服务提供商包含在此列表中。 您可以在包的 composer.json
文件的 extra
部分中定义提供者,而不是要求用户手动将您的服务提供者添加到列表中。 除了服务提供商之外,您还可以列出您想注册的任何 facades:
"extra": {
"laravel": {
"providers": [
"Barryvdh\\Debugbar\\ServiceProvider"
],
"aliases": {
"Debugbar": "Barryvdh\\Debugbar\\Facade"
}
}
},
一旦你的包被配置为发现,Laravel 将在安装时自动注册它的服务提供者和门面,为你的包的用户创造一个方便的安装体验。