この質問は他の複雑なオブジェクトタイプにも当てはまると思いますが、EntityDrupalWrapper
は現在使用しているものです。これは entity_metadata_wrapper()
(およびおそらく他の)によって返されるオブジェクトのタイプです。
次のようなコードを使用する場合:
_$order_wrapper = entity_metadata_wrapper('commerce_order', $order_object);
dpm($order_wrapper);
_
develの出力はあまり役に立ちません。
たとえば、stdClass
オブジェクトを使用したdpm()
の呼び出しで何が期待されるかは示されていません。
dvm()
への同様の呼び出しは、オブジェクトを出力しますが、私が慣れていない方法で、非常に読みにくいです。
私はdebug()
を試してみましたが、PHPユーザー通知が次のように表示されます:
ちなみに、その警告に含まれるHTML出力は、dvm()
が画面に出力する出力と同じです。
これらのタイプのオブジェクトを(できればKrumoで)検査して、使用可能なプロパティを確認するにはどうすればよいですか?または、dvm()
を使用してスタックしていますか?
Dpm($ wrapper-> getPropertyInfo());を使用します。
the docs にあります。
EntityDrupalWrapperオブジェクトで遊んでいました。 debug()は通常、__ toString()によって準備された可能性のある出力を返します
Foreachを使用してEntityDrupalWrapperオブジェクトを反復し、プロパティの名前を一覧表示するのに役立ちました。
foreach($order_wrapper as $name => $obj){
debug($name);
debug(get_class($obj)); //EntityValueWrapper
}
ここに $obj
はタイプ EntityValueWrapper
のオブジェクトです
$ objは$ obj-> value()で読み取ることができ、$ obj-> set( 'value')で書き込むことができます。
編集:
2番目のパラメーターを渡さずにラッパーを作成した場合
すなわちentity_metadata_wrapper( 'commerce_order');
その後、setメソッドとvalueメソッドは実装されていないため、例外がスローされます。
私は自分の小さなウィジェットを書いてラッパーを展開しました:
function _wrapper_debug($w) {
$values = array();
foreach ($w->getPropertyInfo() as $key => $val) {
$values[$key] = $w->$key->value();
}
return $values;
}
dpm(_wrapper_debug($some_object_wrapper));
誰かがそれが便利だと思うことを願っています。
ラッパーを「強化」している元のオブジェクトを検査したい場合は、以下を試してください。
dpm($wrapper->raw())
これは私にとってはうまくいきます。
Inspect モジュールは、デバッグするデータの適切な構造ビューを提供します。
有益で適切にフォーマットされた変数ダンプ、ディープスタックトレース、および実行時間プロファイルを、データベースログ(レポート/最近のログメッセージ)、ファイル、または画面に取得します。
drupal cliを使用します
$ drupal debug:entity
// Displays current events