Как получить значение в функции, которое извлекается и сохраняется в переменной другой функции того же класса |Magento 2


Я хочу использовать значение $OrderID в других функциях.

Вот класс

<?php
namespace vendor\module\Observer;

use Magento\Framework\Event\ObserverInterface;

class Observer implements ObserverInterface
{
public function __construct(
\Magento\Framework\Registry $registry
) { 
    $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); 
}

public function execute(\Magento\Framework\Event\Observer $observer) { 
    $order = $observer->getEvent()->getOrder();
    $orderId = $order->getId();
    $customerId = $order->getCustomerId();
}
public function getOrderId(){

$Id = $orderId;
return $Id;
}

}

Я попробовал это:

class Observer implements ObserverInterface
{
public $orderId;
public function __construct(
\Magento\Framework\Registry $registry
) { 
    $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); 
}

public function execute(\Magento\Framework\Event\Observer $observer) { 
    $order = $observer->getEvent()->getOrder();
    $this->$orderId = $order->getId();
    $customerId = $order->getCustomerId();
}
public function getOrderId(){

$Id = this->$orderId;
return $Id;
}
}

Я вызываю getOrderId(); в том же классе.. но не работает

Прошел по ссылкам, таким как https://stackoverflow.com/questions/519078/making-a-global-variable-accessible-for-every-function-inside-a-class{[13] } Требуется решение в данном конкретном сценарии.

Author: Ashar Riaz, 2018-12-03

1 answers

Вместо set public попробуйте установить переменную private.

class Observer implements ObserverInterface
{
    private $orderId;
    public function __construct(
        \Magento\Framework\Registry $registry
    ) { 
        $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); 
    }

    public function execute(\Magento\Framework\Event\Observer $observer) { 
        ...
        $this->orderId = $order->getId(); //remove "$" from orderId
        ...
    }
    public function getOrderId()
    {
        $Id = $this->orderId; //remove "$" from orderId
        return $Id;
    }
}
 1
Author: Rohan Hapani, 2018-12-03 19:18:34