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

Попытка создать компонент, который позволит использовать более одного платежного шлюза (да, я понимаю, что это было сделано раньше). Я создал ‘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
// ...
}
// ...
}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]