当前位置:   article > 正文

【composer】如何在本地开发、调试Composer包_composer 本地包

composer 本地包

1、准备工作

创建两个空文件夹

|- TestProject # 用于composer引入测试
|- TestPackage # composer的自定义扩展包
  • 1
  • 2

1.1 初始化

TestProjectTestPackage分别执行:

composer init
  • 1

一路默认或者自己按需修改引导中的参数完成composer初始化
例如:

Package name (<vendor>/<name>) [yunuo/test-project]: 
Description []: 用于composer引入测试
Author [, n to skip]: Author Name <xxxx@xxx.xxx>
Minimum Stability []: 
Package Type (e.g. library, project, metapackage, composer-plugin) []: 
License []: 
Would you like to define your dependencies (require) interactively [yes]? 
Search for a package: 
Would you like to define your dev dependencies (require-dev) interactively [yes]? 
Search for a package: 
{
    "name": "yunuo/test-project",
    "description": "用于composer引入测试",
    "authors": [
        {
            "name": "Author Name",
            "email": "xxxx@xxx.xxx"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

Ps: 如果还是不太清楚可以参考:https://github.com/ionepub/ionepub.github.io/issues/72

1.2 Composer Package部分

这里演示Composer Package的基础创建、示例

1.2.1 composer.json修改

TestPackage\composer.json中添加以下内容(去除注释):

"autoload": {
   "psr-4": {
   		// 命名空间指向,例如:namespace yunuo\testPackage;
   		// composer根据此处配置,去往src目录下引入相关文件
        "yunuo\\testPackage\\": "src"
    }
},
"autoload-dev": {
    "psr-4": {
    	// 同理,这是测试目录的指向
        "yunuo\\testPackage\\Test\\": "tests/"
    }
},
// 本地开发,这里设为dev
"minimum-stability": "dev",
"require": {
    // 根据实际需要,引入扩展包需要的扩展
},
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

本例中完整composer.json如下:

{
    "name": "yunuo/test-package",
    "description": "composer的自定义扩展包",
    "authors": [
        {
            "name": "Author Name",
            "email": "xxxx@xxx.xxx"
        }
    ],
    "autoload": {
        "psr-4": {
            "yunuo\\testPackage\\": "src"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "yunuo\\testPackage\\Test\\": "tests/"
        }
    },
    "minimum-stability": "dev",
    "require": {}
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

1.2.2 创建基本目录

创建基本依赖包目录srctests,也是比较常见的目录结构
完整目录列表如下:

|- src      # 依赖包主要code编写目录
|- tests    # 依赖包测试目录
|- composer.json
  • 1
  • 2
  • 3

1.2.3 创建依赖包服务入口文件

创建TestPackageServiceProvider.php文件,作为依赖包服务提供入口文件
这里做个简单的示例:

<?php
namespace yunuo\testPackage;

class TestPackageServiceProvider
{
    public function demo()
    {
        echo '来之TestPackageServiceProvider的输出';
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

至此,我们已经有了一个composer扩展包:yunuo/test-package

1.3 Project部分

测试扩展包执行情况及调试
Ps: 由于第一步我们已经用init命令初始化过项目了,这里就不重复演示了。

1.3.1 composer.json修改

编辑 composer.json 文件,添加以下内容(去除注释):

"require": {
   "yunuo/test-package": "dev-master"
},
"repositories": {
    "yunuo/test-package": {
        "type": "path",
        "version": "dev-master",
        // 此处填写TestPackage包所在目录的绝对路径
        // 若是win系统,注意"/"方向,例如:D:/www/TestPackage
        "url": "/www/TestPackage"
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

本例中完整composer.json如下:

{
    "name": "yunuo/test-project",
    "description": "用于composer引入测试",
    "authors": [
        {
            "name": "Author Name",
            "email": "xxxx@xxx.xxx"
        }
    ],
    "require": {
        "yunuo/test-package": "dev-master"
    },
    "repositories": {
        "yunuo/test-package": {
            "type": "path",
            "version": "dev-master",
            "url": "/www/TestPackage"
        }
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

Ok,至此基本上大功告成,接下来运行测试下

1.3.2 测试

TestProject目录下创建一个测试文件,例如index.php

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

$TestPackage = new \yunuo\testPackage\TestPackageServiceProvider();
$TestPackage->demo();
  • 1
  • 2
  • 3
  • 4
  • 5

访问http://example/index.php就得到以下内容了:
在这里插入图片描述

Ps: 后续TestPackage更新内容后,在TestProject

composer update
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/267016
推荐阅读
相关标签
  

闽ICP备14008679号