如何使用 Composer 构建 Laravel 包?
介绍
Laravel 包是一组可重用的类,可以改进 Laravel 网站的功能。换句话说,一个包就是 WordPress 插件。Laravel 包旨在通过将可重用功能封装在一组可在任何 Laravel 项目中使用的独立类中来减少开发时间。
在本教程中:如何使用 Composer 构建 Laravel 包,我们将为联系表单构建一个 Laravel 包。我们开始这个派对吧。
使用 Composer 构建 Laravel 包的先决条件
以下是使用 Composer 构建 Laravel 包的先决条件:
需要 Laravel v 5.5 或更高版本。
Composer 安装在您的系统上。如果您还没有Composer,可以在此处获取它。
基本设置和安装
因为包旨在为 Laravel 网站提供更多功能,所以第一步是构建 Laravel 网站。我们将使用 Composer 来设置它。查看官方Laravel 文档以获取更多安装选项。
完成后,您需要配置您的 env 文件并指定您的应用程序密钥和其他相关数据。在终端中使用以下命令或手动将 .env.example 的内容传输到新文件并将其另存为 .env。
完成后,使用以下命令。
生成应用程序密钥并配置数据库详细信息后,您的 .env 应该如下所示。
我们的基本 Laravel 应用程序现已设置。是时候开始处理我们的包了。
使用 Bacancy 开发高性能 Laravel 应用程序!
聘请 Laravel 开发人员,与我们一起见证您梦想产品的构建。我们拥有具有非凡问题技能的敬业开发人员。今天联系我们!
项目结构
我们将设置我们包的基本要素。基本上有两种方法可以实现这一点:
手动生成单个文件和文件夹
使用诸如此 CLI 实用程序之类的软件包。
在这里,我们将手动生成文件和目录以了解每个组件如何组合在一起。
这是我们包的文件夹结构。
从您的根目录创建具有以下结构的文件夹。
因为更新 vendor 文件夹中的代码不是一个好习惯,所以我们将在 packages /YourVendor/YourPackage/目录而不是vendor/YourVendor/YourPackage/目录之外执行我们的所有工作。
当我们完成发布我们的包时,它将可以在 vendor 文件夹下下载。
YourVendor 是供应商的名称,可能是您的姓名或您为其生成程序包的客户或企业的名称。
包名称由 YourPackage 表示。在我们的例子中它将是联系表。
让我们开始创建将构成我们的包的文件和文件夹。
创建作曲家文件
我们现在将初始化 Composer。使用以下命令生成 composer.json。
因为它是交互式的,它会问你一系列问题来填写你的composer.json文件。如果您不确定,请单击回车以使用默认响应;如果您不确定,您可以稍后直接从 composer.json 文件更新它。
composer.json 文件现在应该如下所示。
{
“名称”:“您的供应商/联系表”,
"description": "laravel 的联系表单包",
“作者”:[{
"name": "乌萨玛帕特尔",
“电子邮件”:“ john.doe@email.com ”
}],
“要求”: {}}
我们需要通知 composer.json 自动加载我们的文件,因此将此代码添加到您的 composer.json。
我们的 composer.json 文件现在应该看起来像这样。
{
“名称”:“您的供应商/联系表”,
"description": "laravel 的联系表单包",
“作者”:[{
"name": "乌萨玛帕特尔",
“电子邮件”:“ john.doe@email.com ”
}],
“要求”: {},
“自动加载”:{
“psr-4”:{
"YourVendor\\Contactform\\": "src/"
}
}
}
创建一个空的 git 存储库以跟踪之后的修改(我们稍后将添加远程存储库)。使用以下命令。
创建服务提供者
让我们从向包中添加一些文件开始。首先,我们必须为我们的包裹确定一个服务提供商。Laravel 使用一个服务提供者来确定哪些文件将被你的包加载和访问。
在您的 src/子目录中创建一个ContactFormServiceProvider.php文件
我们需要在我们的服务提供商中定义一些项目:
1. 命名空间(我们在 composer.json 自动加载中定义的)。
2.扩展(我们的服务提供者扩展的Laravel类)
3.每个服务提供者必须有的两个强制方法(每个Laravel包服务提供者至少需要两个方法:boot()和register())。
将以下代码行添加到您的服务提供者类中。
注意:您可以在下面的代码中将 YourVendor 替换为您自己的供应商名称。
// ContactFormServiceProvider.php
<?php
命名空间 YourVendor\contactform;
使用 Illuminate\Support\ServiceProvider;
类 ContactFormServiceProvider 扩展 ServiceProvider {
公共功能引导()
{
}
公共功能寄存器()
{
}
}?>
我们需要通知 Laravel 如何加载我们的包并利用它的功能,因为我们还没有部署它并且它还不在我们的 vendor 文件夹中,所以在 composer 中的 Laravel 项目的根目录中。将以下代码添加到您的 JSON。
“自动加载”:{
“类图”:[
“数据库/种子”,
“数据库/工厂”
],
“psr-4”:{
"YourVendor\\Contactform\\": "packages/YourVendor/contactform/src",
“应用程序\\”:“应用程序/”
}
},
“自动加载开发”:{
“psr-4”:{
"YourVendor\\Contactform\\": "packages/YourVendor/contactform/src",
“测试\\”:“测试/”
}
},
根据你的 Laravel 版本,Laravel 可能会自动为你添加它。如果是这样,请务必跳过它。
然后,在您的终端上,在应用程序的根目录下运行以下命令。
让我们检查一下我们的包现在是否正确加载。让我们创建一个路由并将其加载到ContactFormServiceProvider.php文件的启动方法中。
// ContactFormServiceProvider.php
请注意以下事项:
文件所在的当前目录称为 __DIR__。
我们将为我们的包构建的路由文件夹,将存在于我们的 src 文件夹中,而不是默认的 Laravel 路由,在 routes/web.php 中被引用。
将以下代码添加到我们的 package routes 文件夹中的 web.php 文件中。
<?php
// YourVendor\contactform\src\routes\web.php
Route::get('联系人', function(){
return 'Hello from the contact form package';
});?>
然后,在我们的根config/app.php中,我们需要将新的服务提供者添加到提供者数组中,如下所示。
// 配置/app.php
'供应商'=> [
...,
App\Providers\RouteServiceProvider::类,
// 我们的新包类
YourVendor\Contactform\ContactFormServiceProvider::类,
],
运行应用
现在使用命令启动 Laravel 应用程序。
在浏览器中转到 localhost:8000/contact,您应该会看到如下内容:
Github 存储库:Laravel 包示例
现在我们知道我们的包裹正在正确加载我们需要创建我们的联系表格。您可以在此Github 存储库中找到其余代码。
结论
这是一个基本教程,介绍如何使用 Composer 构建 Laravel 包。有了新的理解,您可以创建更多令人惊叹的包。
(言鼎科技)