是否可以通过classmap和autoloader覆盖框架类的类文件位置?如果是,那怎么办?
示例:我想覆盖Zend \ Form \ Fieldset,以便在框架中引用Zend \ Form \ Fieldset的所有地方,我希望它使用我自己的类文件而不是原始文件。
动机:更新框架时,我希望保护我的修改不会被覆盖。
已知替代方案:修改框架中的代码。 缺点:更新框架时修改会丢失。
答案 0 :(得分:5)
在另一个地方写同一个班级(FQCN)通常是个坏主意。这导致两个同等命名的类存在于两个不同的位置。在您自己的命名空间中创建自己的Fielset
会更好。说,Application\Form\Fieldset
。
您可以自己扩展ZF2字段集。然后引用这个新的fieldset类,它可以更加可维护。
此方法的缺点是您不会自动使用新的fieldset类。您必须在所使用的每种表单中引用Application\Form
命名空间。另一方面,这使得其他用户更清楚地了解了确切发生的事情:使用ZF2代码没有意外后果。
我在这里唯一要说的是,你需要另一个字段集?如果你认为你需要那个视图帮助者,那是不对的。您可以修改视图助手以呈现字段集,而无需修改Fieldset表单类本身。