.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';
これは私がそれについて好きなことです:
- Magentoではなく、これを作成した
$mynamespace_
ことを思い出します - また、別の開発者が私の変数を上書きする可能性が非常に低くなります
これは私が好きではないものです:
- これは純粋ではなく、破損する可能性がありますが、おそらくサイト全体で 5 回未満しか必要ないため、適切に保護されています。
- var がこのテンプレートに対してローカルであることを示すために使用
$_
しないことは、「Magento の方法」ではありませんが、コードが読みやすくなります。
したがって、私のテンプレートは主に次のようなコードになります。
$gravdept_someNiceData = true;