composer开发自定义包(基于git)-(方式一)

Posted Json2011315

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了composer开发自定义包(基于git)-(方式一)相关的知识,希望对你有一定的参考价值。

项目中基本都会用到一些公共的组件,比如推送、短信、搜索、队列以及数据库模型等。要是每个项目都单独写一套,那么后期维护就显得力不从心了,所以采用服务组件化形式,多个项目直接引用。

1.首先登录你的github账号,如果没有注册,那么先去注册了吧。然后新建一个项目,项目名字可以任意取也可以或者pack-test

2.把github上的pack-test拉取到本地,如下图


3.因为是基于自动加载机制,接下来就是composer配置了,首先切换到pack-test目录,然后命令行运行composer init 这个是在当前目录配置composer的意思,然后命令行中会要求输入一些基本配置信息,包括报名、作者、版本等,如果不是很明白这些配置,请移步composer教程,填写完成之后,就直接运行composer install安装即可,环境基本搭建完成:

安装之后的文件目录:

Administrator@DESKTOP-UI8EDNS MINGW64 /d/laravel_www/pack-test (master)
$ ll
total 3
-rw-r--r-- 1 Administrator 197121 356 6月  18 16:43 composer.json
-rw-r--r-- 1 Administrator 197121  13 6月  18 11:28 README.md
drwxr-xr-x 1 Administrator 197121   0 6月  18 11:35 vendor/

3.1 composer init 的结果解释:

说明地址:https://docs.phpcomposer.com/04-schema.html

命令解释案例
name项目名称pack/test
description项目描述(不要中文)this is pack test
type安装类型默认为 library (4种类型:library,project,metapackage,composer-plugin)
license许可协议MIT
authors作者 “name”: “json”,“email”: “json_yin@fionacos.com”
minimum-stability版本dev、alpha、beta、RC、stable

4.添加src目录(存放业务文件目录),创建业务文件

Administrator@DESKTOP-UI8EDNS MINGW64 /d/laravel_www/pack-test (master)
$ ls
composer.json  README.md  src/   vendor/

src目录下创建Service.php (创建业务执行代码)

<?php
#命名空间
namespace Pack\\Test;

class Service

    public function __construct()
    
    

    public function hello()
    
        return 'hello world!!';
    

?>

截图:

5 修改composer.json


    "name": "pack/test",
    "description": "pack test",
    "type": "library",
    "license": "MIT",
    "authors": [
        
            "name": "json",
            "email": "json_yin@fionacos.com"
        
    ],
	"minimum-stability": "dev",
    "require": ,
    "autoload":
        "psr-4":
            "Pack\\\\Test\\\\":"src/"
        
    

6.修改完composer.json,需要执行composer dump-autoload

D:\\laravel_www\\pack-test>composer dump-autoload
Generating autoload files
Generated autoload files

7 创建test.php测试

<?php
require_once __DIR__ . '/vendor/autoload.php';

use Pack\\Test\\Service;

$obj = new Service();

$msg = $obj->hello();
var_dump($msg);

截图:

php-cli方式执行测试:

D:\\laravel_www\\pack-test>php test.php
D:\\laravel_www\\pack-test\\test.php:9:
string(13) "hello world!!"

8.执行git推送命令,代码推送到远程git仓库

8.1修改git忽略文件.gitignore(把改文件提交到远程仓库)【vendor文件可以不提交到远程仓库,获取代码没有vendor可以执行composer dump-autoload】

 #/vendor/

8.2推送文件到远程仓库

9.使用laravel为例子 composer引入pack/test的服务组件包(dev-master指的master分支)

9.1 编辑laravel根目录的composer.json文件

包含要引入的包

   "require": 
        "php": "^7.2",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "^6.2",
        "laravel/tinker": "^2.0",
        "predis/predis": "^1.1",
        "pack/test": "dev-master"
    ,

指定自定义包的引入地址,添加中国镜像地址

  "repositories": 
	        "0": 
	            "type": "git",
	            "url": "git@github.com:Yinjinshui/pack-test.git"
	        ,
	        "packagist": 
	            "type": "composer",
	            "url": "https://packagist.phpcomposer.com"
	        
 

9.2 更新指定的包,即更新测试包
查看引入的包文件:

9.3 添加laravel路由文件,执行引入包文件,执行

路径:routes/web.php
//=======调用自定义composer组件
Route::any('zidicomposer',function()
    $obj=new \\Pack\\Test\\Service();
    $msg=$obj->hello();
    return $msg;
);

9.4 访问执行

以上是关于composer开发自定义包(基于git)-(方式一)的主要内容,如果未能解决你的问题,请参考以下文章

自定义包的 Composer 安装路径

composer引用私有git

将包安装到自定义目录 Composer

在任何版本中都找不到 Composer 包

从 GitLab 安装自定义 Composer 包

从零创建发布属于自己的composer包