Zend framework 当我想对第三方ZF2模块进行广泛更改时,如何正确使用它们
我想使用一些第三方模块来满足我的大部分需求,但要将它们用于我的特定应用程序,我必须进行一些更改。更具体地说,我使用的是一个提供ACL功能的模块,而该模块又依赖于一个提供用户和角色的模块。模块本身已经具有内置的数据库结构、用户对象定义、角色对象定义、它们之间的关系定义等等。这些模块还有一个验证码,一些带有特定布局的HTML文件,以及其他一些东西 我需要使用ACL,但不是所有其他的东西。因此,我需要定制模块中的内容以满足我的需要,即:Zend framework 当我想对第三方ZF2模块进行广泛更改时,如何正确使用它们,zend-framework,module,zend-framework2,Zend Framework,Module,Zend Framework2,我想使用一些第三方模块来满足我的大部分需求,但要将它们用于我的特定应用程序,我必须进行一些更改。更具体地说,我使用的是一个提供ACL功能的模块,而该模块又依赖于一个提供用户和角色的模块。模块本身已经具有内置的数据库结构、用户对象定义、角色对象定义、它们之间的关系定义等等。这些模块还有一个验证码,一些带有特定布局的HTML文件,以及其他一些东西 我需要使用ACL,但不是所有其他的东西。因此,我需要定制模块中的内容以满足我的需要,即: 重新构造数据库模式-添加字段,将表之间的关系从一个更改为多个,
- 重新构造数据库模式-添加字段,将表之间的关系从一个更改为多个,从多个更改为多个,添加更多表,删除其他表,等等
- 更新HTML以添加HTML代码、jQuery代码等
- 更新验证码以使用其他类
- 将来可能会更改代码本身生成ACL对象的方式
vendor
文件夹中编辑模块的代码,因为这样做是不可取的,但我基本上想让模块保持原样并开始破解它们
问题:如何使用第三方模块ZF2方式,同时允许我对其进行大量定制
现在我正在考虑按原样使用模块,将它们的内容复制到我的ZF2的module
文件夹中,并将它们用作我自己的ZF2应用程序内部的模块。然后,它们将被检入与我的主应用程序代码相同的版本控制中
我看到的唯一可能的缺点是,如果模块是由原作者更新的,并且我想要他们的更新,我需要手动复制并合并它们,或者使用类似git补丁或git cherry pick的东西 编辑供应商文件夹下的任何代码或通过复制和粘贴将其合并到awesome应用程序的模块/库/任何文件夹中都不是一个好做法 我想这就是你要找的。您可以像boss一样轻松地使用任何第三方库,当该库不能满足您的需求时,可以使用名称空间扩展需要在您自己的代码库中提供更多功能的类 例如,如果可用的Zend都不足以满足您的需求,那么使用名称空间和现有接口,使用类似的脚手架来扩展/重用/实现它们。例如:
<?php
namespace YourModule\Paginator\Adapter;
use Zend\Paginator\Adapter\AdapterInterface;
class MyAwesomePaginatorAdapter implements AdapterInterface
{
...
}