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…

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;都让大模型很难直接应用于机器与人对话的实际业务中。 这其…

常用的苹果应用商店上架工具推荐

摘要 移动应用app上架是开发者关注的重要环节&#xff0c;但常常会面临审核不通过等问题。为帮助开发者顺利完成上架工作&#xff0c;各种辅助工具应运而生。本文探讨移动应用app上架原理、常见辅助工具功能及其作用&#xff0c;最终指出合理使用工具的重要性。 引言 移动应…

牛客题霸-SQL篇(刷题记录三)

本文基于前段时间学习总结的 MySQL 相关的查询语法&#xff0c;在牛客网找了相应的 MySQL 题目进行练习&#xff0c;以便加强对于 MySQL 查询语法的理解和应用。 由于涉及到的数据库表较多&#xff0c;因此本文不再展示&#xff0c;只提供 MySQL 代码与示例输出。 以下内容是…

git stash代码pop stash后误删找回

如题&#xff0c;git stash了代码&#xff0c;点了pop stash后&#xff0c;revert了改动。是可以找回的。 操作步骤&#xff1a; 使用 git stash pop 其实并没有真正地将文件删掉的&#xff0c;而是删除引用而已&#xff0c;因此我们可以使用 git fsck 命令进行找回&#xff…

php 快速入门(一)

一、配置系统环境 1.1 安装软件 1、安装php的开发软件&#xff1a;phpstorm 在这个软件中写代码 2、安装php的运行软件&#xff1a;phpstduy 写好的php程序需要放到phpstduy中&#xff0c;用户才能访问和测试 安装过程注意事项&#xff1a;安装的路径中不能有空格和中文字符&…

彻底理解 IO 多路复用!

在讲解该技术之前&#xff0c;我们需要预习一下文件以及文件描述符。 什么是文件 程序员使用I/O最终都逃不过文件这个概念。 在Linux世界中文件是一个很简单的概念&#xff0c;作为程序员我们只需要将其理解为一个N byte的序列就可以了&#xff1a; b1, b2, b3, b4, ......…