PHP创建GITHub项目时 的composer.json的写法

下面说说我自己提交 到GitHub上的代码中的注意事项

 

1. 目录结构:

    根目录下 创建 src 目录 用来存放 源代码, 创建examples目录存放 示例代码

2. 类名与文件名

    我的类名是 RequireInsensitivity 文件内容如下

<?php
/**
 * Created by IcePHP Framework.
 * User: 蓝冰大侠
 * Date: 2018/8/9
 * Time: 10:11
 */

/**
 * icePHP框架的一部分,独立使用
 */
namespace icePHP;


/**
 * 不区分大小写的查找文件并包含
 * Class RequireInsensitivity
 * @package icePHP
 */
class RequireInsensitivity
{
    /**
     * 不区分大小写的查找文件并包含(路径区分大小写,文件名不区分)
     * @param $filename string 文件全路径
     * @return bool|mixed
     */
    public static function read(string $filename)
    {
        //小写文件名
        $baseLower = strtolower(basename($filename));

        //目录
        $dirName = str_replace(['/', '\\'], DIRECTORY_SEPARATOR, dirname($filename));

        //目录不存在
        if (!is_dir($dirName)) {
            return false;
        }

        //此目录下的所有 文件 及文件 夹
        $dir = dir($dirName);

        //遍历 查看
        while ($file = $dir->read()) {
            //文件夹略过
            if ($file == '.' or $file == '..' or is_dir($dirName . '/' . $file)) {
                continue;
            }

            //不区分大小写并匹配
            if (strtolower($file) == $baseLower) {
                return require_once($dirName . '/' . $file);
            }
        }

        //未找到
        return false;
    }
}

注意文件名要与类名相一致(包括大小写),  /src/RequireInsensitivity.php  , 不要加 诸如.class.php/ .system.php之类的后缀

 2.命名空间:

    我的项目代码统一命名空间为 icePHP , 这里就出现一个问题, github 的repository 中是不允许出现 大写字母的, 所以我在github上的 repository是 ice-php/require-insensitivity

3. composer.json 写法

{
  "name": "ice-php/require-insensitivity",
  "description": "icePHP require insensitivity",
  "keywords": [
    "icePHP",
    "require",
    "sensitivity"
  ],
  "homepage": "https://github.com/ice-php/require-insensitivity",
  "type": "composer",
  "license": "MIT",
  "support": {
    "source": "https://github.com/ice-php/require-insensitivity"
  },
  "authors": [
    {
      "name": "blueice",
      "email": "liyong@nenu.edu.cn"
    }
  ],  
  "require": {
    "php": ">=7.1.0"
  },
  "minimum-stability": "dev",
  "autoload": {
    "psr-4": {
      "icePHP\\": "src"
    }
  },
  "config": {
    "process-timeout": 1800
  }
}

这个文件放在根目录 ,  其中要注意

name是 github中的repository的名称,  而 psr-4中的键, 是 命名空间的名称 ,值是源代码目录名,  我在这个地方卡死半天的时间, 不是repository名称,也不是命名空间+类名, 也不是类名 , 只是命名空间名称

 

4. composer update

  在这之后 会出现 vendor 目录 这个目录 不要提交 到github上, .lock文件也不要提交

5.示例代码

   这个文件名无所谓, 我的是 /examples/index.php

<?php
//包含类文件
require '../vendor/autoload.php';

//引入类定义
use icePHP\requireInsensitivity;

/**
 * 打印一个不存在的文件包含
 * 结果:  flase
 */
var_dump(requireInsensitivity::read('none.php'));

/**
 * 打印一个示例文件包含
 * 结果:
 *  array['被包含的文件']
 */
var_dump(requireInsensitivity::read('included.php'));

6. 测试运行

   命令行运行

7.整体提交github

8.packagist 上 update

9.本地另起一项目, 我的是 ice-php/config

10.在这个项目中, 包含 ice-php/require-insensitivity

{
  "name": "ice-php/config",
  "description": "icePHP multi config",
  "keywords": [
    "icePHP",
    "config"
  ],
  "homepage": "https://github.com/ice-php/config",
  "type": "composer",
  "license": "MIT",
  "support": {
    "source": "https://github.com/ice-php/config"
  },
  "authors": [
    {
      "name": "blueice",
      "email": "liyong@nenu.edu.cn"
    }
  ],
  "require": {
    "php": ">=7.1.0",
    "ice-php/require-insensitivity":">=1.0.1"
  },
  "minimum-stability": "dev",
  "autoload": {
    "psr-4": {
      "icePHP\\": "src"
    }
  },
  "repositories": {
    "packagist": {
      "type": "composer",
      "url": "https://packagist.org"
    }
  },
  "config": {
    "process-timeout": 1800
  }
}

  11.在config项目中, composer update

12. 在config代码中引入 requireInsensitivity

<?php
/**
 * icePHP框架的一部分,独立使用
 */
namespace icePHP;

use icePHP\RequireInsensitivity;

......


   //逐个配置文件目录查找
        foreach (self::$dirs as $dir) {
            $content = RequireInsensitivity::read($dir . DIRECTORY_SEPARATOR . $fullName);
            if ($content) return $content;
        }

......

 

以上知识 应该是PHP开发人员的基本技能 .  很惭愧, 刚刚开始学习,  而且 周边没有同事可以讨论.只能 独自前行.

作为一个老龄PHPer, 坚持下去, ......

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值