1

我正在处理的作曲家包有问题。它实现了一个特征 Billable。

trait Billable
{
/**
     * Update the payment method token for all of the user's subscriptions.
     *
     * @param  string  $token
     * @return void
     */
    protected function updateSubscriptionsToPaymentMethod($token)
    {
        foreach ($this->subscriptions as $subscription) {
            if ($subscription->active()) {
                BraintreeSubscription::update($subscription->braintree_id, [
                    'paymentMethodToken' => $token,
                ]);
            }
        }
    }
}

我试图在我的课堂上覆盖这个方法

class Organisation extends Model
{

    use Billable;

    /**
     * Update the payment method token for all of the user's subscriptions.
     *
     * @param  string  $token
     * @return void
     */
    protected function updateSubscriptionsToPaymentMethod($token)
    {
        foreach ($this->subscriptions as $subscription) {
            if ($subscription->active()) {
                BrntreeSubscription::update($subscription->braintree_id, [
                    'paymentMethodToken' => $token,
                ]);
            }
        }
    }
}

但是该方法没有被覆盖。作为测试,我覆盖了一些公共功能并且它们工作正常,这是特征的限制吗?我试图在网上找到答案,但没有找到答案。

我正在尝试重写此函数,因为我需要自定义 BraintreeSubscription 类的行为。

任何帮助将不胜感激。

4

1 回答 1

3

在您的班级中,您可以执行以下操作,注意函数名称之前的 T 您可以将其更改为真正的别名。

use billable {
    updateSubscriptionsToPaymentMethod as tUpdateSubscriptionsToPaymentMethod;
}

然后只需在类中添加所需的功能:

    public function updateSubscriptionsToPaymentMethod(){
      ...
   }
于 2016-09-12T00:36:59.477 回答