我想使用一些大部分满足我需求的 3rd 方模块,但是要将它们用于我的特定应用程序,我必须进行一些更改。更具体地说,我正在使用提供 ACL 功能的模块,而该模块又依赖于提供用户和角色的模块。模块本身已经内置了数据库结构,定义了用户对象,定义了角色对象,定义了它们之间的关系等等。这些模块还有一个验证码、一些带有特定布局的 HTML 文件,以及其他一些东西。
我需要使用 ACL,但不是所有其他的东西。所以我需要定制模块中的东西以满足我的需要,即:
- 重构数据库模式 - 添加字段,将表之间的关系从一对多更改为多对多,添加更多表,删除其他表等
- 更新 HTML 以添加 HTML 代码、jQuery 代码等。
- 更新验证码以使用另一个类
- 将来可能会改变代码本身生成 ACL 对象的方式
我的印象是正确的 ZF2 方法是扩展模块以修改它以满足我的需要。我看不到轻松扩展这些模块以进行更改的方法,但也许有一种方法。我担心如果我扩展它,我的扩展将尝试撤消或重做许多基本模块已经拥有的东西。换句话说,它会变得凌乱。我不妨创建自己的 ACL 模块。
另一种选择是直接编辑模块。我不想在vendor
文件夹中编辑模块的代码,因为这样做是不可取的,但我基本上想按原样获取模块并开始破解它们。
问题: 我如何使用 3rd 方模块 ZF2 方式,同时允许我对它们进行广泛的自定义?
现在我正在考虑按原样获取模块,将它们的内容复制到我的 ZF2 的module
文件夹中,并将它们用作我自己的 ZF2 应用程序的内部模块。然后将它们检入与我的主应用程序代码相同的版本控制中。
我看到的唯一可能的缺点是,如果模块由原作者更新并且我想要他们的更新,我将需要手动复制它们并合并它们,或者使用 git 补丁之类的东西,或者git cherry-pick
.