在外部文件中扩展PHP函数

时间:2014-02-12 15:24:06

标签: php yii orm crm extend

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

我仍然无法在外部文件中定义类和类函数。我在accounts / models /中创建了一个名为AccountExtend.php的文件并加载它,认为第53行的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模型中用“AccountExtend”替换“OwnedSecurableItem”,并执行“merge_diff”php函数来覆盖默认标签。

现在我的问题是,这是最好的方法吗?任何提示或建议?我的下一步努力是尝试在Account.php模块中扩展一个函数,以添加自定义关系下拉字段或添加任何其他功能。我怎么能解决这个问题,因为这些是包含元素的更复杂的数组?

1 个答案:

答案 0 :(得分:1)

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

class Your_New_Class extends Account
{    

    protected static function translatedAttributeLabels($language)
    {

        //Your new logic

    }

}