класс нагрузки magento 2 с параметрами - PullRequest
1 голос
/ 03 мая 2019

ну, у меня простая проблема, я пытаюсь загрузить этот класс в свой собственный класс: https://github.com/picqer/moneybird-php-client/blob/master/src/Picqer/Financials/Moneybird/Moneybird.php

логично назвать его в __construct: \ Picqer \ Financials \ Moneybird \ Moneybird $ moneybird

, но проблема в том, что для этого требуется заранее установить \ Picqer \ Financials \ Moneybird \ Connection

, так как я могу использовать его в своем коде:

class OnepageControllerSuccessAction implements \Magento\Framework\Event\ObserverInterface
{
    protected $_order;
    protected $_connection;
    protected $_invoiceFactory;
    protected $_moneybird;

    public function __construct(
        \Magento\Sales\Api\Data\OrderInterface $order,
        \Picqer\Financials\Moneybird\Connection $connection,
        \Picqer\Financials\Moneybird\Moneybird $moneybird,
        \Wemessage\Moneybird\Model\InvoiceFactory $invoiceFactory
    ){
        $this->_order = $order;
        $this->_connection = $connection;
        $this->_invoiceFactory = $invoiceFactory;
        $this->_moneybird = $moneybird;
    }
...
public function execute(
    \Magento\Framework\Event\Observer $observer
) {

    $orderids = $observer->getEvent()->getOrderIds();
    foreach($orderids as $orderid){
        $order = $this->_order->load($orderid);
        $this->_connection->setRedirectUrl('');
        ...
        // connection has been established and now we need to pass it to the moneybird
        $moneybird = $this->_moneybird($this->_connection);

, которыйприводит к ошибке: PHP Фатальная ошибка: Uncaught Ошибка: имя функции должно быть строкой ...

ну, один из способов исправить это, это добавить метод setConnection в этот класс и вызвать его, но проблема в том, что этозагружается из репозитория композитором, поэтому, если я хочу использовать свой модуль в другой установке, мне придется сделать те же шаги.

любой другой обходной путь?

добавлена ​​конструкция файла moneybird:

/**
     * Moneybird constructor.
     * @param \Picqer\Financials\Moneybird\Connection $connection
     */
    public function __construct(Connection $connection)
    {
        $this->connection = $connection;
    }

так что это не приведет к путанице и ненужным вопросам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...