ZF2通过自动加载器类映射覆盖框架类

时间:2014-02-03 07:41:23

标签: zend-framework2

是否可以通过classmap和autoloader覆盖框架类的类文件位置?如果是,那怎么办?

示例:我想覆盖Zend \ Form \ Fieldset,以便在框架中引用Zend \ Form \ Fieldset的所有地方,我希望它使用我自己的类文件而不是原始文件。

动机:更新框架时,我希望保护我的修改不会被覆盖。

已知替代方案:修改框架中的代码。 缺点:更新框架时修改会丢失。

1 个答案:

答案 0 :(得分:5)

在另一个地方写同一个班级(FQCN)通常是个坏主意。这导致两个同等命名的类存在于两个不同的位置。在您自己的命名空间中创建自己的Fielset会更好。说,Application\Form\Fieldset

您可以自己扩展ZF2字段集。然后引用这个新的fieldset类,它可以更加可维护。

此方法的缺点是您不会自动使用新的fieldset类。您必须在所使用的每种表单中引用Application\Form命名空间。另一方面,这使得其他用户更清楚地了解了确切发生的事情:使用ZF2代码没有意外后果。

我在这里唯一要说的是,你需要另一个字段集?如果你认为你需要那个视图帮助者,那是不对的。您可以修改视图助手以呈现字段集,而无需修改Fieldset表单类本身。