Ниже приведена моя webhook
класс, наряду с тестом, с этой ошибкой. Когда я echo
из $this->callable_object
выходы invoice
, а когда я echo
из $this->callable_method
выходы created
. По какой-то причине эта строка return $object->$this->callable_method($this->event->data);
создает эту ошибку, и я не уверен, почему? Она должна быть такой же, как $invoice->created($args);
PHP Уловимая фатальная ошибка: объект класса webhook не может быть преобразован в строку
CLASS + TEST
class webhook {
private $event;
private $callable_object;
private $callable_method;
private $types = array(
'invoice.created',
'invoice.payment_failed',
'invoice.payment_succeeded',
'invoice.updated'
);
public function __construct($event) {
$this->event = $event;
$this->valid();
$this->parse();
}
public function valid() {
if(!in_array($this->event->type, $this->types)) {
throw new Exception('unknown event');
}
}
public function parse() {
$parts = explode('.', $this->event->type);
$this->callable_object = $parts[0];
$this->callable_method = $parts[1];
}
public function get_event_type() {
return $this->event->type;
}
public function get_event_data() {
return $this->event->data;
}
public function get_callable_object() {
return $this->callable_object;
}
public function get_callable_method() {
return $this->callable_method;
}
public function execute() {
$object = new $this->callable_object();
return $object->$this->callable_method($this->event->data);
}
}
$event['type'] = 'invoice.created';
$webhook = new webhook((object)$event);
$webhook->execute();
Этот '$ object -> $ this-> callable_method ($ this-> event-> data);' определенно проанализирован как-то не то, что вы ожидаете. Попробуйте '$ object -> {$ this-> callable_method} ($ this-> event-> data);' –