我有一个使用Zend FrameWork在PHP 5.3.2中运行的大型Web应用程序,并使用PHP 5.4.2迁移到新服务器。大部分仍然有效,但有一小部分(让我们称之为“导入”)给出错误:
RptSchdlMdfctnBO :: getWorkFlowData()的声明应该是 兼容WorkFlowBaseBO :: getWorkFlowData($ Id),文件 /www/vrs/vrs/application/models/wrkflows/RptSchdlMdfctnBO.php,line79
会发生这样的类RptSchdlMdfctnBO,其中包含一个空方法getWorkFlowData($ Id),该方法在具有相同参数的许多地方重新定义。 但是在导入部分中,这个方法用两个参数重新定义,然后总是用两个参数调用它们;显然,这在PHP 5.4.2中是不被接受的。 我试图改变方法的定义以接受第二个可选参数,但这并没有改变任何东西:
public function getWorkFlowData($Id,$Flags=0)
两个问题: 1)您能否将我链接到解释PHP中此行为更改的位置? 2)使导入功能起作用的最不危险的解决方法是什么?
答案 0 :(得分:1)
我建议在类中添加一个新方法,例如getWorkFlowDataWithFlags($id, $flags)
并将getWorkFlowData
中的功能重构到其中,然后更改getWorkFlowData
只调用getWorkFlowDataWithFlags
默认标志为0