zoukankan      html  css  js  c++  java
  • 创建 PHP Composer 包并使用的操作指南

    简介

    Composer 包是 PHP 源码文件的集合,使用 Composer 包可以方便的使用他人已经开发好的实现特定功能的 PHP 源码,避免重复造轮子。并且,我们也可以创建自己的 Composer 包,给他人或自己在项目中提供便利,在实际的使用过程中,也更加容易持续完善 Composer 包。

    注意:根据 Composer 官方文档的介绍,Composer 不是一个包管理器(not a package manager),而只是用做依赖管理(dependency manager)。

    初始化扩展包

    先创建一个空目录,再在空目录里执行 Composer 自带的 init 命令,自动生成 Composer 的配置文件(composer.json)。

    $ mkdir composer_test
    $ cd composer_test
    $ composer init
    

    请注意Minimum Stability(官方说明) 要输入 dev,表明我们的扩展包最小稳定版的开发版。否则 Composer 的默认 Minimum Stabilitystable,扩展包需要打上版本号才能被 Composer 认为是稳定版(stable),前期开发调试时简单点处理,设置为 dev,这样引入开发中的 Composer 扩展包时不需要去管什么版本号,等开发调试过了再说。

    type 字段的官方说明
    version 字段的官方说明

    包的环境要求和自动加载规范

    环境要求通过 composer.json 里的 require 字段来限制。

    自动加载规范通过 autoload 字段来定义。

    现在假定需要 PHP 的版本大于等于 7.0.0,并且当前包的 src 目录下的文件以 YxzComposerTest 命令空间来加载,在 composer.json 中增加以下代码:

    "require": {
      "php": ">=7.0"
    },
    "autoload": {
      "psr-4": {
        "Yxz\ComposerTest\": "src"
      }
    }
    

    如果需要引入其他的非 PSR-4 规范的源码文件,可能会需要用到 autoload 下的 file(官方说明) 字段,每一次请求 PHP 时都是包含这些文件。

    例如要包含钉钉 SDK 的代码,可以在 composer.json 中增加以下代码:

    "autoload": {
      "files": [
        "lib/taobao-sdk-PHP/TopSdk.php"
      ]
    }
    

    扩展包里创建类文件

    src 目录下新建 Calc.php 文件,内容如下:

    <?php
    
    namespace YxzComposerTest;
    
    class Calc
    {
        // 计算平方值
        public function square($val)
        {
            return $val * $val;
        }
    }
    

    在项目中引入本地的扩展包

    项目要引入本地目录的扩展包,先要在 composer.json 文件中加入以下内容:

    "repositories": [
        {
            "type": "path",
            "url": "/home/yxz/samba_share/project/composer_test"
        }
    ]
    

    然后在项目目录下执行 Composer 命令:

    composer require yxz/composer_test:@dev
    

    或者

    composer require yxz/composer_test:dev-master
    

    注意:上面命令中的 yxz/composer_test 就是 Composer 扩展包里 composer.json 的 name 字段值。@devdev-master 表示引入的扩展包是主分支的最新版,当还未将扩展包提交到 Github 仓库或者发布到 Packagist 上时,一般这样引入扩展包。

    Composer 会输出下面内容,表示已与本地的扩展包目录建立了超链接(当直接修改扩展包目录里的源码时,项目里可以直接看到效果):

    测试项目中引入的本地扩展包

    新建测试 PHP 文件:

    <?php
    $calc = new YxzComposerTestCalc();
    echo $calc->square('12');
    

    终端或者浏览器访问这个 PHP 文件,会看见输出 144

    谢谢阅读。

    参考文章:
    学习开发自己的 Composer 包,并使用 GitHub 实时更新到 Packagist | Laravel China 社区
    Composer 包开发居然这么简单 - 掘金
    PHP回顾之创建自己的Composer包 - 掘金

  • 相关阅读:
    golang_并发安全: slice和map并发不安全及解决方法
    什么情况下需要用到互斥锁sync.Mutex?
    使用Charles进行HTTPS抓包
    centos6 yum 源失效 404,终于解决了
    GOMAXPROCS你设置对了吗?
    容器资源可见性问题与 GOMAXPROCS 配置
    gflags 使用方式
    分布式训练问题
    NCCL常用环境变量
    git 常用命令
  • 原文地址:https://www.cnblogs.com/imzhi/p/create-php-composer.html
Copyright © 2011-2022 走看看