如何在本地开发Compoer包

1,555次阅读
没有评论

记录一下如何在本地开发一个Composer包,以及如何发布到Packgist

假设你要开发一个名叫xuchen/biubiubiu的包。

准备工作

你得保证你的系统用已经安装了

  1. Git
  2. PHP与Composer

并且保证在命令行中都可以使用

准备一个空项目用于测试

我们首先需要在本地新建一个空的Composer项目,用来生成autoload.php文件,以及在其vendor目录中引入我们之后开发完成的包来进行测试。当然,如果你已经有一个正在开发中的项目,例如一个基于Laravel框架的项目,那么你可以跳过目前这一步。

具体可以先看一下Composer的文档,如何初始化一个项目

假设我们需要在D盘新建我们的空项目,名称为composer-workspace,则新建如下目录

d:/composer-workspace

在刚刚新建的目录中打开命令行,使用如下命令初始化空项目

composer init

composer会引导你输入各种参数来完成包的创建,名字填写<your-name>/composer-workspace即可,其他参数全部默认。我们就假设这个项目叫xuchen/composer-workspace吧。

完成以上的步骤后,我们就能在composer-wokspace目录下看到一个composer.json文件。

Github上开个新坑

又到了每个程序员喜闻乐见的环节:去Github上开个新坑。当然了,这次我们希望能把这个Repo完善。

我们得假设你的包还未作为一个Composer包开发。至于为什么要这么假设,大部分的包,都是业务代码写着写着发现可以抽象出一个通用的包来使用,于是想着迁移到一个单独Composer包中。当然了,前提是:

  1. 原本的代码就是你的个人项目,没有使用你的上班时间及公司设备来开发。
  2. 或者,公司支持你的开源行为。

既然是新的包,我们自然要去Github上开个新坑,,Github上开新坑的步骤我就不赘述了。在Github上开一个Repo的目的并不仅仅是为了代码管理,最后我们想要将代码发布到Packgist也需要用到Github。

假设我们新开的GithubRepo叫Biubiubiu好了。

Clone你的Repo并放到随便什么位置

在Github上开好新坑了,就需要把代码Clone下来,我们就放在如下位置吧:

d:/workspace/biubiubiu

使用Composer初始化你的项目

到上一步的代码目录中,运行:

composer init

name填写xuchen/biubiubiudescription随便,stabilitydevrequire暂时可以不填,等到composer.json文件生成之后再说。

一路火花带闪电,项目的composer.json生成了,一个初始化状态的composer.json非常简陋,但是问题不大:

{
    "name": "xuchen/biubiubiu",
    "minimum-stability": "dev"
}

规定代码的命名空间

接下来就要把代码放进来了,关于这块,你可以先看看Composer自动加载文档

要用到autoload,我们就需要规定好我们包代码的命名空间,假设biubiubiu这个包的命名空间是Xuchen\Biubiubiu\<ClassName>,且代码放在<包的根目录>/src目录下,则需要对composer.json做如下修改:

{
    "name": "xuchen/tencent-cos",
    "minimum-stability": "dev",
    "autoload": {
        "psr-4": {
            "Xuchen\\Biubiubiu\\": "src/"
        }
    }
}

autoload字段中规定了我们需要自动载入的代码,从上述代码中可以看到:规定了命名空间为Xuchen\Biubiubiu,该命名空间对应的代码目录在<包的根目录>/src下。

到composer-workspace中引入包

现在我们要回过头在最开始创建的项目中引入xuchen/biubiubiu

修改d:/composer-worksapce/composer.json,加入repositories字段:

{
    "name": "xuchen/composer-workspace",
    "repositories": {
        "xuchen/biubiubiu": {
            "type": "path",
            "url": "d:/workspace/biubiubiu",
            "options": {
                "symlink": true
            }
        },
    }
}

在当前目录(d:/composer-worksapce)下,运行:

composer require xuchen/biubiubiu @dev

完成之后,你会发现在当前目录的vendor中出现了xuchen/biubiubiusymlink。此时,正在开发中的xuchen/biubiubiu包已经正确引入到了composer-workspace这个项目中。

写一个测试类

到刚刚规定的<包的根目录>/src下新建一个测试类,就命名为Demo.php好了:

<?php

namespace Xuchen\Biubiubiu;


/**
 * Class Demo
 * @package Xuchen\Biubiubiu
 */
class Demo
{
    public static function execute()
    {
        echo 'It works!';
    }
}

测试包是否已正确引入

composer-workspace项目根目录下新建一个php脚本,命名为test-autoload.php

<?php

use Xuchen\Biubiubiu\Demo;

require_once './vendor/autoload.php';

Demo::execute();

在当前目录打开命令行,使用如下命令

php -f test-autoload.php

会看到命令行上输出:

It works!

这表明xuchen/biubiubiu包中的Demo.php已经通过Composer的自动载入功能正确载入到了composer-workspace项目中。

项目依赖

假如xuchen/biubiubiu项目依赖其他的包,例如常用的Guzzle

biubiubiucomposer.json中加入如下依赖:

{
    "name": "xuchen/tencent-cos",
    "minimum-stability": "dev",
    "require": {
        "guzzlehttp/guzzle": "^6.3"
    },
    "autoload": {
        "psr-4": {
            "Xuchen\\Biubiubiu\\": "src/"
        }
    }
}

composer-workspace项目中使用命令行:

composer update

Composer会在composer-workspace中安装Guzzle,如此便可在xuchen/biubiubiu中直接引入Guzzle使用。

参考

Developing composer packages locally

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 0
评论(没有评论)

文心AIGC

2024 年 1 月
1234567
891011121314
15161718192021
22232425262728
293031  
文心AIGC
文心AIGC
人工智能ChatGPT,AIGC指利用人工智能技术来生成内容,其中包括文字、语音、代码、图像、视频、机器人动作等等。被认为是继PGC、UGC之后的新型内容创作方式。AIGC作为元宇宙的新方向,近几年迭代速度呈现指数级爆发,谷歌、Meta、百度等平台型巨头持续布局
文章搜索
热门文章
潞晨尤洋:日常办公没必要上私有模型,这三类企业才需要 | MEET2026

潞晨尤洋:日常办公没必要上私有模型,这三类企业才需要 | MEET2026

潞晨尤洋:日常办公没必要上私有模型,这三类企业才需要 | MEET2026 Jay 2025-12-22 09...
面向「空天具身智能」,北航团队提出星座规划新基准丨NeurIPS’25

面向「空天具身智能」,北航团队提出星座规划新基准丨NeurIPS’25

面向「空天具身智能」,北航团队提出星座规划新基准丨NeurIPS’25 鹭羽 2025-12-13 22:37...
5天连更5次,可灵AI年末“狂飙式”升级

5天连更5次,可灵AI年末“狂飙式”升级

5天连更5次,可灵AI年末“狂飙式”升级 思邈 2025-12-10 14:28:37 来源:量子位 让更大规...
钉钉又发新版本!把 AI 搬进每一次对话和会议

钉钉又发新版本!把 AI 搬进每一次对话和会议

钉钉又发新版本!把 AI 搬进每一次对话和会议 梦晨 2025-12-11 15:33:51 来源:量子位 A...
商汤Seko2.0重磅发布,合作短剧登顶抖音AI短剧榜No.1

商汤Seko2.0重磅发布,合作短剧登顶抖音AI短剧榜No.1

商汤Seko2.0重磅发布,合作短剧登顶抖音AI短剧榜No.1 十三 2025-12-15 14:13:14 ...
最新评论
ufabet ufabet มีเกมให้เลือกเล่นมากมาย: เกมเดิมพันหลากหลาย ครบทุกค่ายดัง
tornado crypto mixer tornado crypto mixer Discover the power of privacy with TornadoCash! Learn how this decentralized mixer ensures your transactions remain confidential.
ดูบอลสด ดูบอลสด Very well presented. Every quote was awesome and thanks for sharing the content. Keep sharing and keep motivating others.
ดูบอลสด ดูบอลสด Pretty! This has been a really wonderful post. Many thanks for providing these details.
ดูบอลสด ดูบอลสด Pretty! This has been a really wonderful post. Many thanks for providing these details.
ดูบอลสด ดูบอลสด Hi there to all, for the reason that I am genuinely keen of reading this website’s post to be updated on a regular basis. It carries pleasant stuff.
Obrazy Sztuka Nowoczesna Obrazy Sztuka Nowoczesna Thank you for this wonderful contribution to the topic. Your ability to explain complex ideas simply is admirable.
ufabet ufabet Hi there to all, for the reason that I am genuinely keen of reading this website’s post to be updated on a regular basis. It carries pleasant stuff.
ufabet ufabet You’re so awesome! I don’t believe I have read a single thing like that before. So great to find someone with some original thoughts on this topic. Really.. thank you for starting this up. This website is something that is needed on the internet, someone with a little originality!
ufabet ufabet Very well presented. Every quote was awesome and thanks for sharing the content. Keep sharing and keep motivating others.
热评文章
读懂2025中国AI走向!公司×产品×人物×方案,最值得关注的都在这里了

读懂2025中国AI走向!公司×产品×人物×方案,最值得关注的都在这里了

读懂2025中国AI走向!公司×产品×人物×方案,最值得关注的都在这里了 衡宇 2025-12-10 12:3...
5天连更5次,可灵AI年末“狂飙式”升级

5天连更5次,可灵AI年末“狂飙式”升级

5天连更5次,可灵AI年末“狂飙式”升级 思邈 2025-12-10 14:28:37 来源:量子位 让更大规...
戴尔 x OpenCSG,推出⾯向智能初创企业的⼀体化 IT 基础架构解决方案

戴尔 x OpenCSG,推出⾯向智能初创企业的⼀体化 IT 基础架构解决方案

戴尔 x OpenCSG,推出⾯向智能初创企业的⼀体化 IT 基础架构解决方案 十三 2025-12-10 1...
九章云极独揽量子位三项大奖:以“一度算力”重构AI基础设施云格局

九章云极独揽量子位三项大奖:以“一度算力”重构AI基础设施云格局

九章云极独揽量子位三项大奖:以“一度算力”重构AI基础设施云格局 量子位的朋友们 2025-12-10 18:...
乐奇Rokid这一年,一路狂飙不回头

乐奇Rokid这一年,一路狂飙不回头

乐奇Rokid这一年,一路狂飙不回头 梦瑶 2025-12-10 20:41:15 来源:量子位 梦瑶 发自 ...