クラスメソッドの取得
呼び出すことができるメソッドを知りたいだけの場合は$item
、
var_dump(get_class_methods($item));
クラスメソッドのリストを取得します。
クラスファイルの識別
のクラス定義が含まれているファイルを知りたい場合は$item
、最初に
var_dump(get_class($item));
クラス名を取得します(Mage_Sales_Model_Quote_Item
この場合)。
次に、すべての下線(_
)をスラッシュ(/
)に置き換えて追加.php
します。これにより、クラスファイル(Mage/Sales/Model/Quote/Item.php
この場合)の相対ファイルパスがわかります。
次に、フォルダを確認します
app/code/local/
app/code/community/
app/code/core/
lib/
相対パスに指定された順序で。通常、最初に一致するのは必要なクラスファイルです。
カスタム見積もり属性にアクセスするためのメソッドの作成
あなたはする必要はありません。Magentoがこれを行います。
他の多くのMagentoモデルと同様に、quoteオブジェクトはに基づいていVarien_Object
ます。後者は、_call()
PHPの魔法のメソッドの1つであるメソッドを提供します。
public function __call($method, $args)
{
switch (substr($method, 0, 3)) {
case 'get' :
//Varien_Profiler::start('GETTER: '.get_class($this).'::'.$method);
$key = $this->_underscore(substr($method,3));
$data = $this->getData($key, isset($args[0]) ? $args[0] : null);
//Varien_Profiler::stop('GETTER: '.get_class($this).'::'.$method);
return $data;
case 'set' :
//Varien_Profiler::start('SETTER: '.get_class($this).'::'.$method);
$key = $this->_underscore(substr($method,3));
$result = $this->setData($key, isset($args[0]) ? $args[0] : null);
//Varien_Profiler::stop('SETTER: '.get_class($this).'::'.$method);
return $result;
case 'uns' :
//Varien_Profiler::start('UNS: '.get_class($this).'::'.$method);
$key = $this->_underscore(substr($method,3));
$result = $this->unsetData($key);
//Varien_Profiler::stop('UNS: '.get_class($this).'::'.$method);
return $result;
case 'has' :
//Varien_Profiler::start('HAS: '.get_class($this).'::'.$method);
$key = $this->_underscore(substr($method,3));
//Varien_Profiler::stop('HAS: '.get_class($this).'::'.$method);
return isset($this->_data[$key]);
}
throw new Varien_Exception("Invalid method ".get_class($this)."::".$method."(".print_r($args,1).")");
}
これで、quoteオブジェクトにカスタムデータを含める場合は、
$quote->setMyCustomAttribute(911);
このような呼び出し時に、PHPはquoteオブジェクトで定義されたメソッドをチェックしますsetMyCustomAttribute()
。そのようなメソッドが見つからない場合は、オブジェクトに魔法の__call()
メソッドがあるかどうかを確認し、代わりにこれを呼び出します。
この例では、のset
ケース__call()
が一致します。
ここで何が起こるかというと、Magentoは最初にキャメルケースの文字列setMyCustomAttribute
を下線付きのキーに変換しますmy_custom_attribute
。911
次に、保護されたプロパティに値を格納しますVarien_Object::_data['my_custom_attribute']
。
見積もりオブジェクトからカスタムデータを読み取るには、次のように呼び出すだけです。
$value = $quote->getMyCustomAttribute();
原則は同じです。getMyCustomAttribute
に変換されmy_custom_attribute
、の現在の値Varien_Object::_data['my_custom_attribute']
が返されます。
それがすべての魔法です。
ただし、これは一時的なものであることに注意してください。カスタム属性を保存/ロードできるようにする場合は、quoteオブジェクトを拡張する必要があります。しかし、それは別の話です。