如何在本地开发Composer包

如何在本地开发Composer包

周煦辰 2019-05-26

记录一下如何在本地开发一个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项目中。

参考

Developing composer packages locally

原文地址:https://www.cnblogs.com/zhouxuchen/p/10926201.html

时间: 2024-10-12 10:42:17

如何在本地开发Composer包的相关文章

开发composer包,打通github和packagist,并自动更新

1. 首先需要本地安装好composer,并配置好环境变量,在命令行输入composer,显示以下信息就表示正常安装 2. 在github对应项目的根目录下进行初始化composer 初始化完成后,就会在目录下自动多了一个composer.json的文件 然后把composer.json文件提交到github上面 提交这个是因为packagist是根据这个json文件来对应github上的项目的. 3. 在https://packagist.org/上登录自己的packagist 登陆进去后点击

开发 composer 包,上传 packagist并实时更新+发布稳定版

这段时间比较忙,一直没时间写点东西,今天抽空随便写写.背景:在新公司发现一个现象,很多已经工作六七年的老程序员竟然不会用 git,也不会在网上搜索,而对于 使用 composer 开发包也就更不了解了,现在我就做个入门总结. 不说废话,直奔主题 -- 鲁迅 ^_^ 参考文档:https://laravel-china.org/docs/composer/2018 协议:http://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_softwa

动手开发自己的第一个 composer 包

原文:http://blog.jayxhj.com/2016/05/basic-composer-package-development/ composer 是 PHP 的依赖管理工具,本篇文章就来说明如何构建一个包,并提交到 Packagist ,这样别人就可以方便地通过 composer 使用你的包了. 开发 composer 包有以下几个步骤: 初始化 composer.json 文件 定义命名空间及包名 实现包需要实现的功能 提交到 GitHub 在 Packagist 注册包 初始化

composer 将远程的包更改为本地开发模式

1.在composer包中去掉调用 一般情况下,去掉包,包在进行更新的时候会自己删除: 2.在vendor/composer/installed.json 去掉这个已经安装的引用 这样再次安装的时候这个包就会保留在本地,不会被删除 3.在composer.json 中加入对这个包的命名空间映射 因为composer包都会自动进行加载,如果没有进行加载,则也是找不到这个文件,所以需要对命名空间做下映射. 比如我们引用一个第三方包,他的命名空间是这样的: "autoload": { &qu

开发自己的composer包

1. 创建一个开发目录 1 mkdir project 2 cd project 2. 利用composer生成一个composer.json 1 composer init 2 > Welcome to the Composer config generator 3 > This command will guide you through creating your composer.json config. 4 5 // 1. 输入项目命名空间 6 // 注意<vendor>

基于 Laravel 开发博客应用系列 —— 设置 Windows 本地开发环境

1.安装原生PHP 下载/解压 PHP 到 PHP 下载页下载最新版本的 PHP(如果使用 Laravel 5.1 的话需要 PHP 5.5.9+ 版本),解压下载的zip格式压缩文件到本地目录,比如E:\Php. 编辑 php.ini 打开命令行按照如下步骤创建php.ini文件: C:\Users\Test>E: E:\>cd Php E:\Php> copy php.ini-development php.ini 然后在编辑 php.ini: // 将 ; extension_di

Storm使用入门之本地开发环境搭建

本篇博文详细告诉你如何安装Storm的本地开发环境,总体分为两步,具体如下: 1.从官网上下载Storm的发布包,下载完成后将其解压,并将解压后的bin目录添加到环境变量(PATH)中,以方便后续执行Storm的相关命令 2.修改Storm的配置文件(storm.yaml),主要是按照实际情况更新配置文件中的集群信息,然后将修改后的配置文件添加到目录(~/.storm/)中,目的是为了后续能够远程启动和停止集群上的计算任务(即topology) 接下来,咱们来详细地介绍每一个操作步骤. 首先,何

搭建BCE本地开发环境

1. 在官网下载VirtualBox & 虚拟机 http://bce.baidu.com/doc/BAE/GUIGettingStarted.html#.E4.B8.8B.E8.BD.BD.E5.B9.B6.E5.90.AF.E5.8A.A8.E8.99.9A.E6.8B.9F.E6.9C.BA Windows下安装依赖包 下载localenv压缩包并解压. 从解压包内的localenv/SOFTWARE目录安装Vagrant和Virtual Box. 将依赖包的安装路径加入可执行路径PATH

如何将自己开发的包打进pybundle

1 将下载的包,缓存在本地目录jjj中: pip bundle project.pybundle -r pip-requires -d jjj 该指令,当jjj目录有包时,它不进行下载而直接使用缓存,如果没有,它将下载,并将包放在jjj下.当你打的包比较多,且网速很慢,导致打包经常超时失败,这个缓存非常有用. 2 不联网,直接用本地缓存包打包: pip bundle project.pybundle -r pip-requires --no-index -f file:///tmp/ jjj 通