这是类的全局变量和始终首先调用的函数
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中使用它,即 - 我在类的开头声明变量,我在第一个函数中为它分配一个值(仅一次)然后我在课堂上的任何地方都使用这个值。
答案 0 :(得分:1)
您需要使用Magento的注册表模式,而不是使用PHP Globals。您可以在此处找到Magento注册表模式的详细信息 http://alanstorm.com/magento_registry_singleton_tutorial
答案 1 :(得分:0)
正如@Mark Baker所说,$ product_sku在你的场景中不是一个全局变量。
如果你想要变量$ product_sku的值为persit,你可以将变量声明为静态,如下所述:
//在类
中声明静态属性public static $ product_sku = 0;
//访问静态属性
自:: $ product_sku;
请在http://php.net/manual/en/language.oop5.static.php
详细介绍static关键字希望它会对你有所帮助。