Това е глобалната променлива за класа и функцията, която винаги се извиква първа
private $product_sku;
public function indexAction(){
$request = $this->_getValidRequest();
global $product_sku;
if ($this->flag == FALSE) {
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $product_sku);
$product_sku = $request['sku'];
}
else {
$product = Mage::getModel('catalog/product')->loadByAttribute('printed_order_number', $request['pon']);
$product_sku = $product->getSku();
}
// here I call the other function
}
И другата функция, която използва глобалната променлива
public function showPopUpInProductViewPageAction(){
$request = $this->_getValidRequest();
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $GLOBALS['product_sku']);
Mage::log($GLOBALS['product_sku']); // logging $product_sku to check its value, but it's empty
}
Това не са пълните функции, а само подходящият код за проблема
И така, във втората функция обектът $product
е празен, защото product_sku
няма стойност.
Не искам да повтарям кода за проверка за flag
.
Как мога да го използвам като в Java, т.е. - декларирам променливата в началото на класа, присвоявам й стойност (само веднъж) в първата функция и след това използвам това стойност, където искам в класа.
$this
, не го правиglobal
... всъщност достъпът до него чрез$this
го прави променлива или свойство на екземпляр..., което определено не е глобално - person Mark Baker   schedule 22.11.2013