# PR一个 composer包过程记录

![在这里插入图片描述](https://cdn.learnku.com/uploads/images/202101/20/42876/cCFIomeVbE.jpeg!large)


看到一位朋友的 [enum](https://learnku.com/articles/14193/php-enumerating-class-implementation-based-on-annotation)包，感觉还不错。

因为在实际开发中 我们使用  [BenSampo/laravel-enum](https://github.com/BenSampo/laravel-enum)这个包去管理枚举。 

在标准化项目中（比如国际化）其实这个包挺好的。但是在小项目中，先添加枚举类，再去enums.php 中添加翻译，让人感觉很繁琐~~~

像这样子：
![在这里插入图片描述](https://cdn.learnku.com/uploads/images/202101/20/42876/jFWYqPOjef.png!large)
所以对这个注解读取“翻译”的这个包，我很感兴趣。

但是问题来了，这个包里面只能读取枚举翻译，如果我需要一个数组呢？

像这样：

```clike
AppStatus::toSelectArray()
```

我想用这个包，但是我又想用到toArray，我满足这两个条件，我在小项目中就可以操刀就干，而又不失优雅。

所以，我决定fork一份自己改一下，添加toArray 的方法

fork好了之后，在项目根目录中添加 一个 `packages`的文件夹，在这个文件夹中，git clone [https://github.com/liaoshengping/x-phalcon-enum](https://github.com/liaoshengping/x-phalcon-enum)


composer.json 中添加，本地目录
```clike
    "repositories": [
        {
            "type": "path",
            "url": "packages\\x-phalcon-enum"
        }
    ]
```

接下来

> composer require limingxinleo/x-phalcon-enum dev-master

在vendor 会生成一份 和`packages` 一样的 文件。这时已经映射到了 packages ，只需要修改其中的文件就可以了。

在  Enum.php 添加一个toArray 的静态方法。

```php
    public static function toArray(){
        $ref = new ReflectionClass(static::class);
        $properties = $ref->getDefaultProperties();
        $_adapter = new ReflectionAdapter(static::class);
        $arr = $_adapter->getAnnotationsByName('Message', $properties);
        return $arr;
    }
```

push 到 自己的master 上，创建一个 Pull Request，如图：

![在这里插入图片描述](https://cdn.learnku.com/uploads/images/202101/20/42876/RQKfYD87xW.png!large)

等大佬检查代码，如果通过则合并。

这样就完成了我第一个pr
![在这里插入图片描述](https://cdn.learnku.com/uploads/images/202101/20/42876/Zrx8tt5xZn.png!large)


