这是类和函数的全局变量,总是首先调用
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中那样使用它,即-我在类的开头声明变量,在第一个函数中为它分配一个值(仅一次),然后在类中的任何地方使用这个值。
您需要使用Magento的注册表模式,而不是使用PHP全局变量。您可以在此处找到Magento注册表模式的详细信息http://alanstorm.com/magento_registry_singleton_tutorial
如果您希望变量$product_sku的值持久化,您可以如下所述将该变量声明为静态:
//在类中声明静态属性
公共静态$product_sku=0;
//访问静态属性
self::$product_sku;
请在上详细浏览静态关键字http://php.net/manual/en/language.oop5.static.php
希望它能帮助你。