Наследование свойств класса от родительского класса после инициализации устанавливает значение

Попытка создать компонент, который позволит использовать более одного платежного шлюза (да, я понимаю, что это было сделано раньше). Я создал 'PaymentsComponent' и некоторые специфичные для шлюза компоненты, которые расширяют его.

Проблема в том, что я не могу получить переменные, установленные / инициализированные в родительском компоненте, которые будут доступны в дочернем компоненте. Они доступны, но только со значением по умолчанию, а не со значением после инициализации. Что мне не хватает?

Внутри контроллера:

private function processPayment($requestData) {
    $this->Payments = $this->Components->load('Payments');
    $this->Payments->initialize($this);
    debug($this->Payments->apiSecretKey); // shows: '123456789'
    $result = $this->Payments->charge($requestData);
    //...
}

PaymentsComponent

<?php
App::uses('Component', 'Controller');
class PaymentsComponent extends Component {

    public $apiSecretKey = null;

    public function initialize() {
        $this->apiSecretKey = Configure::read('PaymentGateway.secret_key');
    }

    public function charge($data) {
        $result = $this->Authnet->charge($data);
    }
    // ...
}

Компонент Authorize.net

class AuthNetComponent extends PaymentsComponent {
    public $components = array('Session');
    public function charge($data) {
        debug($this->apiSecretKey); // shows: null
        // ...
    }
    // ...
}

0 ответов

Другие вопросы по тегам