如何在PHP文件中对函数进行覆盖

时间:2018-10-23 13:46:45

标签: php

我使用的是开发公司经常更新的模块。

此模块的一个php文件(cat_product_get.php)中的以下功能:

function getColSettingsAsXML()

此函数内的以下代码:

        {
            foreach($colSettings[$col]['options'] AS $k => $v)
            {
                $xml.='<option value="'.str_replace('"','\'',$k).'"><![CDATA['.$v.']]></option>';
            }
        }

这样的代码导致以下警告: PHP警告:在第317行的../cat_product_get.php中为foreach()提供了无效的参数

第317行如下:

foreach($colSettings[$col]['options'] AS $k => $v)

为解决警告,我添加了以下一行:

        if (is_array($colSettings[$col]['options']) || is_object($colSettings[$col]['options']))

        {
            foreach($colSettings[$col]['options'] AS $k => $v)
            {
                $xml.='<option value="'.str_replace('"','\'',$k).'"><![CDATA['.$v.']]></option>';
            }
        }

但是在每次模块更新时,我都必须再次修改cat_product_get.php。

我试图说服开发人员多次在他的代码中添加合适的行。 但是开发人员拒绝这样做。

有没有一种方法可以在某个地方添加一个替代,以避免在每个模块更新时添加行?

我不是开发人员...

在此先感谢您的答复。

帕特里克

1 个答案:

答案 0 :(得分:0)

如果该函数只是一个普通函数,则无法在PHP中完成。您不能有重复的函数名称。

如果它是类(又称方法)中的一个函数,则可以扩展该类并重写该函数,然后使用您的类。

class Person
{
   public function fixThisCrap()
   {
      return 'the wrong stuff';
   }

   // more functions 
}

class MyPerson extends Person
{
   public function fixThisCrap()
   {
      return 'the correct stuff';
   }

   // parent class functions will be available, no need to code
}