Как получить значение в функции, которое извлекается и сохраняется в переменной другой функции того же класса |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] } Требуется решение в данном конкретном сценарии.
2
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