回答:
それらは同じ場合もあれば、異なる場合もあります。使用しているオブジェクトによって異なります。
あなたはインスタンス化クラスはメソッドが含まれている場合getName()
、あなたから得る結果getName
とはgetData('name')
異なる場合があります。
クラスが拡張されVarien_Object
ておらず、メソッドがない場合でも、エラーが発生する可能性がありますgetData
。
Varien_Object
メソッドを拡張し、含まないクラスの場合getName()
、2つのメソッドの結果は同じです。特定のメソッドが存在しない場合に呼び出される
Varien_Object
メソッド__call
を実装します。 コードがどのように見えるかはこちらをご覧ください。
だから、基本的に任意のメソッドの呼び出しにマッピングgetSomethingHere()
するがgetData('something_here')
。それはで始まる「偽」の方法で同じ働きset
、has
そしてuns
。
getData():
ほとんどの場合、これは使用する方法です。2つのオプションのうち、この方が実際には高速で効率的です。出力を変更する必要がなく、値を表示するだけの場合は、getData()を使用します。ただし、商品価格など、getData()で適切に機能しない属性があります。まだテストしていませんが、getData( 'name')はgetName()とは異なる結果を生成する可能性があります。
getAttributeName()
データの表示/フォーマット方法に機能を追加するためにブロック内のメソッドをオーバーライドする必要がある場合にのみ、このメソッドを実際に使用する必要があります。このメソッドを使用する場合、Magentoはデータのレンダリングに追加の手順を実行する必要があるため、getData()を使用してデータを表示するよりも処理が少し遅くなります。したがって、$ _ product-> getName()を使用することで、たとえば、データが出力される前にデータを変更する関数を製品ビューブロックに追加できます。
一部の詳細:https : //stackoverflow.com/questions/3541273/magento-getsku-or-getdata-sku-returns-empty-string