我想我试图变得过于聪明。如果它有效,是的。如果没有,不用担心。
我希望我的应用程序尽可能模块化。目前我只有一个产品模块,但根据经验,我知道我可能还想要一个类别模块,其中产品将是子模块。虽然类别模块不存在,但我希望调用 Products_Forms_NewProduct 来加载该表单。当类别模块被放入应用程序时,我希望它被自动检测并转发任何调用,例如,Products_Forms_NewProduct 到 Categories_Forms_NewProduct。
我该怎么做?
我想我试图变得过于聪明。如果它有效,是的。如果没有,不用担心。
我希望我的应用程序尽可能模块化。目前我只有一个产品模块,但根据经验,我知道我可能还想要一个类别模块,其中产品将是子模块。虽然类别模块不存在,但我希望调用 Products_Forms_NewProduct 来加载该表单。当类别模块被放入应用程序时,我希望它被自动检测并转发任何调用,例如,Products_Forms_NewProduct 到 Categories_Forms_NewProduct。
我该怎么做?
您正在寻找依赖注入 IMO。但我建议有一个可以适当修改表单的类。就像一个表单插件。这不是扩展的情况,而是组合的情况。我会在这些方面做一些事情:
// say in Form_NewProduct's init()
$this->addPlugin(new Form_Plugin_Category());
$this->addSubform(new Form_NewProduct_ProductSubform());
//in plugin or in form directly
if (class_exists('Form_NewProduct_CategorySubform')) {
$this->_form->addSubform(new Form_NewProduct_CategorySubform());
}