composer autoload不生效_创建自己的Composer

本文详细介绍了如何创建自己的Composer包,包括在GitHub上创建仓库、配置自动加载、提交代码、打标签、提交到Packagist以及设置GitHub webhook实现自动更新。通过这些步骤,读者可以了解完整的Composer包开发和发布流程。
摘要由CSDN通过智能技术生成

IT技术研习社,专注互联网技术研究与分享,喜欢的朋友可以点击【关注】;把经验传递给有梦想的人;

创建自己的Composer

仓库(Repository)

仓库是软件开发中常见的概念,与源(sources)意义相近,主要指托管资源的场所。许多软件都有仓库的概念,例如yum、npm、Git,以及Composer。仓库以中心化的方式托管资源,为软件的正常工作提供保障。

Packagist 是Composer默认的中央仓库,PHP社区的绝大部分Composer包都托管在该网站上。Packagist提供公开的、免费的托管服务,任何人均可注册、自由发布包,无需审核。Packagist由Private Packagist提供托管和维护,两者的主要区别为:Packagist的官网是托管...,托管的代码无需开源,仓库服务器可位于内网,提供更快、更高效的包代码托管服务。

可以配置多个仓库,Composer会自动找出最适合项目的依赖包。搜索包的流程如下:首先检查当前项目是否配置额外仓库,有则优先在额外仓库中检索;无结果向上到全局配置中的额外仓库检索;未配置或搜索无结果的情况下,回退到默认的Packagist中央仓库检索。除非禁用了默认的仓库,Packagist中的包总会被检索到。因为这个原因,Composer推荐PHP开发人员将包托管在Packagist网站上,方便他人检索和引用。

1.首先,打开https://github.com/的官网,注册一个账号,之前我早就注册了账号,这里就不展开了,相信大家都会注册账号。

2.创建自己的github仓库,如图

54f066e57beb6fa15ca622ada16beb0e.png
0d32ef6de8ce5102d7824db9d26ef08b.png

接下来填写自己的仓库名,开始创建仓库

18d9bca479cd8576b3a3c10e6f723fc2.png

找到仓库地址复制,将仓库克隆到本地,我的是放到 e:/source,如果这一步,你克隆的是git开头的地址,你需要将你机器的ssh公钥,和github绑定上,否则你是无法克隆git开头的仓库地址的,这里注意下,我的早就绑定了,所以,这里可以克隆。你想克隆git开头的地址,你可以本地生成ssh-key,就会在你本地生成几个文件,把那个id_rsa.pub中的全部内容,放到github网站的SSH keys中即可,入口在设置setting里面,设置好,就可以克隆了

d7ccc3fbebf176c198bf274a03be7338.png
d579f811317e3be9b3f20c9eb6417065.png
18e531a6029641101bec8b1d2c051baa.png
aafbb1c143bbad651ade2ba5fa2f70c3.png

切换到abstarfish仓库下面,这就是你的根目录,这是里面只有一个readme.md文件,(只需要记住composer.json在包的哪个目录下面,一般那就是包的根目录了。)

现在我们还没有composer.json文件,可以根据composer文档生成并编辑它,当然composer贴心的为我们准备了命令行,composer init,根据提示填写

5936fc0e8dc79a7e02611601742cac1f.png

生成了composer.json文件,但是,还缺自动加载,我们在composer.json中加入自动加载的代码,图:

d8d2560c98cd319fb82b9c9b99d68a5d.png

接下来,按照psr-4的配置在根目录下创建文件夹和文件,这里的文件夹和psr-4配置要一致,我创建了一个Tool类,写了一个静态Hello方法,用于包的第一个版本测试,如图

df02f62a7ce82ab5fdda133309b8a79d.png

接下来,执行 composer install 包就装好了,如图

6f5e86d9036c6e630eafb62814a10bbf.png

然后,根目录下就多了一个vender目录,它就是包的自动加载代码,vendor/composer/autoload_psr4.php中生成命名空间和目录的映射关系

7fb245aa4dd6aaee8ba481b44f5da42c.png
4b2a4076e4b8df7e4e114176b472f5c3.png

接下来,我们在根目录下创建一个demo.php,测试一下,我的hello方法是否可以用,代码如图

fb969dd5d469e667c9a93ffa45664c57.png
3082db8132acc5c5de0f9388a963133c.png

出现hello world 说明我们的包可以用了,然后编辑.gitignore文件,将lock文件放到忽略文件中,如下图:

3fa0a3c82ec0c5254c361520f0945506.png

接下来,提交代码到github仓库中,

现在的仓库中只有一个可怜的readme.md文件,提交命令如图:

d296e55aa727944586d9a27264dce55b.png

此时,我们的github仓库不在光秃秃,如下图

aa4b63ba1a951971e586e043682f2046.png

我们的包最后是要提交到https://packagist.org/packages/submit 这个网站上,当然,你还要在这个网站上注册一个账号

然后才可以上传,我们获取github仓库的https的仓库地址,在packagist网站上点击submit菜单栏,菜单栏地址https://packagist.org/packages/submit,

在packagist网站提交页面,输入github仓库地址,checkout ,之后submit,如图

c3b36ac39df3aa57f3ef438048825ca4.png
79002627e79bbc1a9ed07ce4efa253f3.png
f67a9fbdb31af66ae5104ea4683d2b2d.png

包就已经上传完成了,此时,如果你想用这个包,是不可以的,

你看,我在我的另外一个项目中,加载这个包composer require abstarfish/abstartfish,不能发现如图:

f8b281ef4f52b6210c3fe398b30bfecf.png

那我们怎么办呢,难道就不能用了吗?当然是否定的,git页面我们切换到abstarfish项目根目录,提交修改,打一个v0.1的tag,然后提交tag到远程github仓库,如图

a615be52af991e85f3dcc461e8564d99.png

点击release,发布一个版本

f71b009ec47d8cef8ae427fc4ea00e90.png
6c4f680063ef3a1478597ca5707664b1.png
fc41b932a5af14bfb8198ec0561b38ac.png

对勾一定要打上,打上以后就是发布版本了。

5efcacbc5af1f06e4ca7216ddb48c598.png
7ff4f88aef0ed68fa9f6a43b44867a98.png

此时,packagist网站提示,包现在不是自动更新的需要配置 github server hook,接下来配置这个github server hook。回到github仓库,找到settings,如图增加一个server

36fb807575a1cd5c2ca30062929ea31d.png
4766ec817223b0a2913f2648a83f7800.png
c3cef382b18eb71967082507fc916ed4.png

输入密码,提交,

9568041acc7ea9deceaf086af74d1e5a.png

user 就是你的github账户名,token这里注意,他是你在packagist网站上获取的,如图

0c9aebc98e5968c95b6aa20cea538669.png

获取到token,回到github网站,填写token,并

839b83b0ffe576f4c66a2043a34599fa.png

点击test server 测试一下,两个网站的关联

07b3670bf9501a8fa0f3630ad23e3b63.png
6e924a8a40016d1fd837a10ac169c27d.png

哈哈,到这里,两个网站就建立了关联,我们的包就可以随着github release版本的发布,实现自动发布了,现在可以自动发布了,好高兴,再看,packagist网站提示,没有了

ee3f1fdc2682f3ff0fad20d07d6ae4e6.png

到这里,咋们的composer包,就做好了。

我找了自己的一个restful项目,在根目录下 composer require abstarfish/abstarfish 安装咱自己的包

59039a69f91f2619401c748c7264bbdc.png

项目包,下载下来了,哈哈,在看一下代码,

2e3b3138dba619a6ff18eb15aaf98ca6.png

和我们的github上代码一致,

48f0dd9f105580f39bddedf1c6a269be.png

然后,就是测试一下,我的包代码到底能不能用,我在我的restful项目中,use 一下Tools类,

34903dd78fdc80ca668e9c965ebc47f5.png

将代码传到服务器上,看看是否可以生效,!!!!这里注意一下,我的vender目录是在git的忽略文件里面,所以,我把代码传到服务器上,还是找不到类库,我必须在服务器上 执行composer install,才能将包装在服务器上。

7d9153d74b7d7b369114ac59d5fb090b.png
c8e373ab931339fcd0b133cd76f1338f.png

配置仓库

有两种方法对Composer的仓库进行配置:命令行和编辑配置文件。composer config是Composer配置的命令,可以用来配置项目或全局的仓库信息,例如:

composer config [-g] repo.packagist composer

第二种方法是编辑配置文件。编辑项目的composer.json或~/.config/composer/config.json,增加repositories一项配置,例如:

"repositories": { "packagist": { "type": "composer
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值