Laravel扩展包的开发

扩展包的开发

1. 创建一个新项目,初始化扩展包配置

首先创建一个全新的Laravel项目:

composer create-project --prefer-dist laravel/laravel laravelPkg

接下来,在项目中创建目录package/{your_name}/{your_package_name}

mkdir -p packages/zhxlan/laradmin

进入到这个目录,执行composer init

cd packages/zhxlan/laradmin
composer init

接下来的就是看你具体的配置包信息了。执行完成后会生成一个composer文件。

{"name": "zhxlan/laradmin","authors": [{"name": "zhx","email": "zhx.0830@qq.com"}],"require": {}
}

2. 创建扩展包基本目录,文件

一般情况下,我会创建一下的目录

packages/zhxlan/laradmin
├── composer.json
├── src
└── tests

3. 修改扩展包 composer 配置

然后修改我们这个扩展包的composer.json文件,设置一下自动加载配置、以及扩展包的命名空间。

{"name": "zhxlan/laradmin","description": "","keywords": ["laravel", "laradmin"],"autoload": {"psr-4": {"Zhxlan\\Laradmin\\": "src/"}},"authors": [{"name": "zhx","email": "zhx.0830@qq.com"}],"license": "MIT","minimum-stability": "stable","require": {}
}

4. 编写扩展包信息啦~

接下来,我们来创建 PluginsServiceProvider 、Plugin 文件。目录结构如下:

packages/zhxlan/laradmin
├── composer.json

│   └── config

│           ├── laradmin.php

├── src
│   └── Controller
│           ├── LaradminController.php
│   └── LaradminServiceProvider.php
└── tests

<?phpnamespace Zhxlan\Laradmin\Controller;class LaradminController
{public function index(){return 'Hello';}
}
<?php<?phpnamespace Zhxlan\Laradmin;use Illuminate\Support\ServiceProvider;
use Zhxlan\Laradmin\Controller\LaradminController;class LaradminServiceProvider extends ServiceProvider
{/*** Register any application services.** @return void*/public function register(){// 注册服务绑定$this->app->bind('laradmin', function ($app) {return new LaradminController();});}/*** Bootstrap any application services.** @return void*/public function boot(){// 发布配置文件$this->publishes([__DIR__.'/config/laradmin.php' => config_path('laradmin.php'),]);}}
<?php
return ["name" => "laradmin",
];

到这里已经开发了一个最简单Laravel的扩展包了。

扩展包本地测试

把 PluginsServiceProvider 添加到项目的 config/app.php 中的 providers 数组中

'providers' => [...\Zhxlan\Laradmin\LaradminServiceProvider::class
],

这个时候要修改 package_demo 项目下的 composer.json

{...,"autoload": {...,"psr-4": {...,"Zhxlan\\Laradmin\\": "packages/zhxlan/laradmin/src/"}},...
}

运行命令:

// 发布配置文件在config目录下面
php artisan vendor:publish//最后在根目录执行命令
composer dumpautoload

测试运行:

php artisan tinker//接着输入代码:app('laradmin')->index();

扩展包发布

1. 首先把扩展包发布到全球最火的也是最大的同性交流平台 GitHub

2. 接着再 Packagist 也发布 [https://packagist.org/]

设置代码同步

GitHub,点击 Setting

版本

默认版本是 dev-master,Composer 包的版本号会从 Git 的 tag 中同步过来。

git tag v1.0.0
git push origin v1.0.0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/776597.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在点集的新知识面前百年集论不堪一击

黄小宁 与x∈R相异&#xff08;等&#xff09;的实数均可表为yxδ&#xff08;增量δ可0也可≠0&#xff09;&#xff0c;因各实数的绝对值都可是表示长度的数故各实数都可是数轴上点的坐标&#xff0c;于是x∈R变换为实数yxδ的几何意义可是&#xff1a;一维空间“管道”g内R…

Python程序设计 循环结构(二)

1.斐波那契数列 编写一个能计算斐波那契数列中第x个数的小程序。斐波那契数列&#xff08;Fibonacci sequence&#xff09;&#xff0c;又称黄金分割数列、 因数学家莱昂纳多斐波那契&#xff08;Leonardoda Fibonacci&#xff09;以兔子繁殖为例子而引入&#xff0c;故又称为…

Sublime for Mac 使用插件Terminus

1. 快捷键打开命令面板 commandshiftp2. 选择 Package Control: Install Package&#xff0c;然后会出现安装包的列表 3. 在安装终端插件前&#xff0c;我们先装个汉化包&#xff0c;ChineseLocallization&#xff0c;安装完重启 4. 输入 terminus&#xff0c;选择第一个&am…

【C++】从C到C++、从面向过程到面向对象(类与对象)

文章目录 C入门知识C与C的关系1. 类的引入&#xff1a;从结构体到类2. 类的声明和定义3. 类的作用域4. 类的访问限定符5. 面向对象特性之一&#xff1a;封装6. 类的实例化&#xff1a;对象7. 计算类对象的内存大小8. 成员函数中暗藏的this指针9. 类的六个默认生成的成员函数9.1…

iptables添加端口映射,k8s主机查询不到端口但能访问。

研究原因&#xff1a;k8s内一台主机使用命令查询没有80端口。但通过浏览器访问又能访问到服务。 查询了资料是使用了hostport方式暴露pod端口。cni调用iptables增加了DNAT规则。访问时流量先经过iptables直接被NAT到具体服务去了。 链接: K8s罪魁祸首之"HostPort劫持了我…

MySql实战--事务到底是隔离的还是不隔离的

第3篇文章和你讲事务隔离级别的时候提到过&#xff0c;如果是可重复读隔离级别&#xff0c;事务T启动的时候会创建一个视图read-view&#xff0c;之后事务T执行期间&#xff0c;即使有其他事务修改了数据&#xff0c;事务T看到的仍然跟在启动时看到的一样。也就是说&#xff0c…

外贸资讯 | 你看不上的邻居1-2月从中国进口额猛增

你看不上的邻居1-2月进口额猛增 被你猜对了&#xff0c;是印度 先是在俄罗斯最近的新闻报道里说&#xff0c;1月份中国成为印度主要贸易伙伴&#xff1a;两国贸易额增长16%&#xff0c;达到105亿美元。 然后去查了印度海关数据&#xff0c;也是中国排在第一&#xff0c;有意…

Stable Diffusion XL之核心基础内容

Stable Diffusion XL之核心基础内容 一. Stable Diffusion XL核心基础内容1.1 Stable Diffusion XL的主要优化1.2 SDXL整体架构初识1.3 VAE模型1.VAE基本介绍2. VAE基本模型结构3.VAE的训练 1.4 U-Net模型&#xff08;Base部分&#xff09;1. 十四个基本模块概述2. SDXL_Spatia…

Eigen教程:C++线性代数库详解

Eigen是一个高效、优雅的C++模板库,用于线性代数、矩阵和向量运算、数值分析及其相关算法。它提供了类似Matlab的语法和接口,使得编写代码变得简洁明了。Eigen经过精心设计,充分发挥了C++语言的优势,在运行效率、内存管理等方面表现出色。 本文将详细介绍Eigen库的使用方法,并…

鸿蒙原生应用开发-ArkTS语言基础类库多线程TaskPool和Worker的对比(三)

一、TaskPool注意事项 实现任务的函数需要使用装饰器Concurrent标注&#xff0c;且仅支持在.ets文件中使用。 实现任务的函数入参需满足序列化支持的类型。 由于不同线程中上下文对象是不同的&#xff0c;因此TaskPool工作线程只能使用线程安全的库&#xff0c;例如UI相关的非…

设计模式一详解

一、观察者模式 当一个对象状态发生改变时&#xff0c;依赖它的对象全部会收到通知&#xff0c;并自动更新 场景&#xff1a;一个事件发生后&#xff0c;要执行一连串更新操作。传统的编程方式&#xff0c;就是在事件的代码之后直接加入处理逻辑。当更新的逻辑增多之后&#x…

20.helm安装最新kubernetes dashboard

介绍 Kubernetes Dashboard 是一个通用的、基于 Web 的 UI,适用于 Kubernetes 集群。它允许用户管理集群中运行的应用程序并对其进行故障排除,以及管理集群本身。 从版本 7.0.0 开始,官方放弃了对基于清单的安装的支持。目前仅支持基于 Helm 的安装。由于多容器设置和对 K…

SwiftUI Release 引入的辅助焦点管理

文章目录 前言使用 FocusState 属性包装器高级技巧&#xff1a;专用辅助技术可聚焦字段的高级用法优化体验运行截图总结 前言 SwiftUI Release 引入了强大的新功能&#xff0c;其中之一是辅助焦点管理。 这个新功能使得在SwiftUI中处理辅助技术&#xff08;如 VoiceOver 和 S…

百度谷歌301强引蜘蛛池效果怎么样

301强引蜘蛛池效果怎么样 本文 虚良SEO 原创&#xff0c;转载保留链接&#xff01;网址&#xff1a;百度谷歌301强引蜘蛛池效果怎么样 - 虚良SEO 随着搜索引擎优化&#xff08;SEO&#xff09;技术的发展&#xff0c;越来越多的网站开始采用蜘蛛池技术来提高网站的排名和流量。…

关于Kubernetes-v1.23.6-资源调度-StatefulSet-OnDelete当删除的时候才更新

前面提到的普通的滚动更新&#xff0c;都是修改完sts立即就会发生更新操作 而还有一种更新的策略为&#xff0c; OnDelete&#xff0c;即只有在 pod 被删除时会进行更新操作 还是先看一下web这个sts的当前更新策略如下&#xff1a; 这里我们修改&#xff0c;更新策略&#xf…

【创作纪念日】1024回忆录

不知不觉中&#xff0c;从创作第一篇文章到现在&#xff0c;已经1024天了&#xff0c;两年多的时间里&#xff0c;已经从硕士到博士了&#xff0c;1024&#xff0c;对于程序员来说&#xff0c;是个特别的数字吧&#xff0c;在此回忆与记录一下这些美好的经历吧。 缘起 很早以前…

UE5C++学习(四)--- SaveGame类存储和加载数据

上一篇说到使用数据表读取数据&#xff0c;如果我开始玩游戏之后&#xff0c;被怪物打了失去了一部分血量&#xff0c;这个时候我想退出游戏&#xff0c;当我再次进入的时候&#xff0c;希望仍然保持被怪物打之后的血量&#xff0c;而不是重新读取了数据表&#xff0c;这个时候…

【动态规划】【数学方法】Leetcode 343. 整数拆分

【动态规划】【数学方法】Leetcode 343. 整数拆分 解法 动态规划解法 数学 每次拆成n个3&#xff0c;如果剩下是4&#xff0c;则保留4&#xff0c;然后相乘 ---------------&#x1f388;&#x1f388;343. 整数拆分 题目链接&#x1f388;&#x1f388;------------------- …

重构销售话术和知识库,容联云找到了大模型的“钉子”

科技云报道原创。 从ChatGPT诞生起&#xff0c;大模型在营销、客服等场景的落地就被予以众望。然而在经历了一年多的“百模大战”洗礼之后&#xff0c;人们发现无论是算力成本还是内容生成的安全合规问题&#xff0c;都让大模型很难直接应用于机器与人对话的实际业务中。 这其…

log4js里numBackups设置存在无效的情况

按照文档介绍numBackups是允许的旧日志文件数量&#xff0c;实际使用中&#xff0c;确实有些配置是按这个定义表现的&#xff0c;但是也存在没有按这个定义表现的&#xff0c;我看了半天没有发现有什么区别&#xff0c;奇怪了。不知道是log4js的bug还是怎样&#xff0c;看看下面…