这段时间比较忙,一直没时间写点东西,今天抽空随便写写。
背景:在新公司发现一个现象,很多已经工作六七年的老程序员竟然不会用 git,也不会在网上搜索,而对于 使用 composer 开发包也就更不了解了,现在我就做个入门总结。
不说废话,直奔主题  ——  鲁迅 ^_^
参考文档:https://laravel-china.org/docs/composer/2018
协议:http://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html
步骤:
- 创建项目目录
 mkdir composer-test
 cd  comopser-test
- 初始化
 composer init
 提示进行配置 packagist 信息:
 输入项目命名空间 name:其实就是 packagist 名称,建议 github 用户名/项目名称,leesin/composer-test
 项目描述 Description: 项目描述,会现在是 packagist 项目介绍中
 作者信息 Author: Leesin <leesin_code@163.com>
 输入最低稳定版本:stable, RC, beta, alpha, dev
 输入项目类型:library, project, metapackage, composer-plugin
 输入授权类型:开源软件 一般选择 MIT
 输入依赖信息:yes->搜索包名 (可以是 php 等)->输入版本
 =  >=  <=  之类的
 是否需要require-dev:同上
 进行生成:yes, 生成 composr.json
- 上传 github
 git init && echo 'hello world' >> README.md
 git add . && git commit -m'init'
 git remote add origin 仓库地址
 git push origin -u 仓库地址
- 提交 packagist
 将github 上的包提交到 packagist 注册
 submit->输入仓库地址->check->通过检测就提交到 packagist 了
 如果提示已经存在,可修改包名或者直接提交
- 设置 composer 包自动更新
 默认情况下,github代码更新,composer 包是不自动更新的
 方案: 使用 github 服务钩子
 setting->Integrations & services ->Add service 搜索 packagist->填写资料:
 user: packagist 的用户名
 token:packagist.org 中 Profile show API Token  查看
 domain:  https://packagist.org/
 edit -> test service ,[Okay, the test payload is on its way. ] 就可以自动更新了
- 
使用
 通过 packagist 拉取github 代码
 composer create-project packagist名  project名  --prefer-dist  dev-master [ 指定版本 ]
     引用其他包
composer require package_name
实现自动加载:
        include vendor/autoload.php
或者
        修改 composer.json, 增加 autoload 配置项,files 表示要自动加载的文件,psr-4 表示要自动加载的 命名空间
        classmap 一般用来对某些开发类自动加载,psr-4则是项目代码的自动加载,psr-0基本由psr-4替代,files模式主要针对全局helper之类的function载入,配置完成后执行composer dump-autoload即可
        "autoload":{
                "files":[
                    "src/functions.php",
                    "",
                    ...
                ],
            "psr-4":{
                "Leesin\\" : "src", // 前边命名空间,后边为目录
            }
        }
        composer dump / dump-autoload 按照配置文件,重新加载配置
 
- 
补充:常用包结构
 .
 ├── composer.json
 ├── README.md
 └── src    // 源码目录
 └── Hello.php
  mkdir src && touch src/Hello.php
                     <?php 
                            namespace Leesin;
                            class Hello
                            {
                                public static function SayHello(){
                                    return 'hello world';
                                }
                            }
 配置自动加载
             "autoload":{
                    "psr-4":{
                            "Leesin\\":"src/"    # "命名空间\\":"目录名称/",表示 src 下的命名空间为 Leesin
                    }
            }
         composer dump
    创建测试文件 touch test.php
                    <?php 
                            require __DIR__.'/vendor/autoload.php';
                            use Leesin\Hello;
                            echo Hello::SayHello();
    测试:php test.php 输出 hello world 表示成功
 
- git tag 发布稳定版本 composer 包
 git tag -a v0.1 -m 'version 0.1'
 git push origin --tags
 在 packagist 中刷新即可看到