【问题标题】:Extend PHP functions in an external file在外部文件中扩展 PHP 函数
【发布时间】:2014-02-12 15:24:06
【问题描述】:

我正在开发一个名为 Zurmo 的开源 CRM 平台。它使用 Yii 框架和 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 模块中扩展一个函数,以添加自定义关系下拉字段或添加任何其他功能。由于这些是包含元素的更复杂的数组,我该如何处理?

【问题讨论】:

  • 我以为我已经删除了那个帖子。对不起。感谢您了解这一点

标签: php yii orm crm extend


【解决方案1】:

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

class Your_New_Class extends Account
{    

    protected static function translatedAttributeLabels($language)
    {

        //Your new logic

    }

}

【讨论】:

  • 而且这个“新逻辑”也会在 Accounts 模块上改变?我以为新类的逻辑只是被覆盖了?
  • 如果不编辑实际的 Account 类,您无法更改该方法的逻辑(扩展新类除外)。 “旧”功能将保留在 Account 类中,而新功能将存在于新类中。然后,您可以: Account::translatedAttributeLabels() 访问旧逻辑,如果需要,Your_New_Class::translatedAttributeLabels() 访问新逻辑。
  • 好的,问题中的最后一个问题。我尝试这样做的主要原因是在 CRM 更新时维护代码。除了在每次更新后更改原始文件之外,还有其他好的做法吗?
  • 扩展它是最好的方法,然后当文件更新时,您可以将任何新逻辑移至新类。否则直接编辑文件将覆盖您的任何更改。
  • 我将在哪里/如何包含扩展文件?包含?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-25
  • 1970-01-01
  • 2019-02-10
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
相关资源
最近更新 更多