.phtml
在遵守 Magento 架构的同时,在模板中创建临时变量的最佳方法是什么?
例子
文件:/template/catalog/product/view.phtml
<?php
$myVar = $_product->getAttributeText('color');
if ( empty($myVar) ) {
// does not exist
} else {
// show the attribute
}
?>
除了这个表达式之外,其他任何地方都不需要 $myVar。
注意:我不是在寻找替代方法来编写避免创建变量的代码。为了便于讨论,假设需要创建一个临时变量。
应该$myVar
是什么?
- $myVar
- $namespaced_myVar
- $_myVar
- Magento 的注册表模式http://alanstorm.com/magento_registry_singleton_tutorial
- 还有什么...
寻找一个“真实世界”的解决方案,而不是一个纯粹的答案。你会怎么写这个?
回答
结合 Ben 的回答和 Alan/Vinai 的对话中的这一点https://twitter.com/VinaiKopp/status/225318270591442945 - 这就是我要写的方式:
如果需要的不仅仅是基本逻辑,我将使用新方法扩展该类。
否则,我将在本地范围内创建新的变量,如下所示:
$mynamespace_myVar = 'xyz';
这就是我喜欢它的地方:
$mynamespace_
提醒我我创建了这个而不是Magento- 这也使得其他开发人员不太可能覆盖我的变量
这是我不喜欢的:
- 它不纯并且可能会损坏,但是对于整个站点,我可能只需要 <5 次,因此可以合理地屏蔽它。
- 不
$_
用于显示 var 是该模板的本地变量不是“Magento 方式”,但它使代码更具可读性。
所以我的模板大多会有这样的代码:
$gravdept_someNiceData = true;