繁体   English   中英

在外部文件中扩展PHP函数

[英]Extend PHP functions in an external file

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

我仍然在定义外部文件中的类和类函数时遇到麻烦。 我在第53行的Accounts / models /中创建了一个名为AccountExtend.php的文件,并以AccountsModule.php加载该文件,如下所示:

public function getRootModelNames()
    {
        return array('Account, AccountExtend');
    }

在AccountExtend.php文件中,我具有此功能,它将标签从默认的“账单地址”更改为“属性地址”

class AccountExtend extends Account implements StarredInterface
{
     protected static function translatedAttributeLabels($language)
    {
        $params = LabelUtil::getTranslationParamsForAllModules();
        $paramsForAffiliations = $params;

        return array_merge(OwnedSecurableItem::translatedAttributeLabels($language),
            array(

                'billingAddress'         => Zurmo::t('AccountsModule',      'Property Address',                     array(), null, $language),

            )
        );

    }

因此,在上面我将此数组与以前在扩展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

    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM