您现在的位置是:首页 >其他 >【composer】如何在本地开发、调试Composer包网站首页其他

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

假意诗人 2024-06-30 00:01:02
简介【composer】如何在本地开发、调试Composer包

1、准备工作

创建两个空文件夹

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

1.1 初始化

TestProjectTestPackage分别执行:

composer init

一路默认或者自己按需修改引导中的参数完成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]? 

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

1.2 Composer Package部分

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

1.2.1 composer.json修改

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

"autoload": {
   "psr-4": {
   		// 命名空间指向,例如:namespace yunuo	estPackage;
   		// composer根据此处配置,去往src目录下引入相关文件
        "yunuo\testPackage\": "src"
    }
},
"autoload-dev": {
    "psr-4": {
    	// 同理,这是测试目录的指向
        "yunuo\testPackage\Test\": "tests/"
    }
},
// 本地开发,这里设为dev
"minimum-stability": "dev",
"require": {
    // 根据实际需要,引入扩展包需要的扩展
},

本例中完整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.2 创建基本目录

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

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

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

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

<?php
namespace yunuotestPackage;

class TestPackageServiceProvider
{
    public function demo()
    {
        echo '来之TestPackageServiceProvider的输出';
    }
}

至此,我们已经有了一个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"
    }
}

本例中完整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"
        }
    }
}

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

1.3.2 测试

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

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

$TestPackage = new yunuotestPackageTestPackageServiceProvider();
$TestPackage->demo();

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

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

composer update
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。