在外部文件中扩展PHP函数

在外部文件中扩展PHP函数,php,yii,orm,crm,extend,Php,Yii,Orm,Crm,Extend,我正在开发一个名为Zurmo的开源CRM平台。它使用Yii框架和RedBean。我正在尝试“扩展”或更改特定“模块”中的函数。我想知道是否可以创建一个单独的文件,在其中我可以更改原始函数中的任何变量或数组 在外部文件中定义类和类函数时仍然有困难。我在accounts/models/中创建了一个名为AccountExtend.php的文件,并在第53行加载了AccountsModule.php,如下所示: public function getRootModelNames() {

我正在开发一个名为Zurmo的开源CRM平台。它使用Yii框架和RedBean。我正在尝试“扩展”或更改特定“模块”中的函数。我想知道是否可以创建一个单独的文件,在其中我可以更改原始函数中的任何变量或数组

在外部文件中定义类和类函数时仍然有困难。我在accounts/models/中创建了一个名为AccountExtend.php的文件,并在第53行加载了AccountsModule.php,如下所示:

public function getRootModelNames()
    {
        return array('Account, AccountExtend');
    }
在AccountExtend.php文件中,我有一个函数,它将标签从默认的“账单地址”更改为“属性地址”

因此,在上面,我将这个数组与以前在extended Account.php中合并的类“OwnedSecurableItem”合并,并在Account.php模型中将“OwnedSecurableItem”替换为“AccountExtend”,并执行了一个“merge_diff”php函数来覆盖默认标签


现在我的问题是,这是最好的方法吗?有什么建议吗?我的下一个难题是尝试扩展Account.php模块中的一个函数,比如添加自定义关系下拉字段或添加任何其他功能。既然这些数组更复杂,包含元素,我该怎么做呢?

如果一个方法是公共的或受保护的,它可以在新类中被覆盖,例如:

class Your_New_Class extends Account
{    

    protected static function translatedAttributeLabels($language)
    {

        //Your new logic

    }

}

这个“新逻辑”在Accounts模块上也会改变吗?我以为新类的逻辑被覆盖了?如果不编辑实际的Account类,您就不能更改该方法的逻辑(在新类中扩展除外)。“旧”功能将保留在Account类中,而新功能将保留在新类中。然后,您可以执行以下操作:Account::translatedAttributeLabels()访问旧逻辑,如果需要,您的_New_类::translatedAttributeLabels()访问新逻辑。好的,问题中的最后一个问题。我尝试这样做的主要原因是在CRM有更新时维护代码。除了在每次更新后更改原始文件外,还有其他好的做法吗?扩展它是最好的方法,那么当文件更新时,您可以将任何新逻辑移动到新类。否则,直接编辑文件将覆盖您的任何更改。我将在何处/如何包含扩展文件?包括吗?我以为我已经删除了那篇文章。很抱歉谢谢你接电话
class Your_New_Class extends Account
{    

    protected static function translatedAttributeLabels($language)
    {

        //Your new logic

    }

}