web-dev-qa-db-ja.com

大きなオブジェクトまたは複雑なオブジェクトでDevelデバッグ関数を使用する方法

モジュールとtwigテンプレート)でDevelのデバッグ関数kint()dpm()を実際に使用するのに問題があります。これらは、プリミティブ変数、フラット配列などですが、EntityRerefenceFieldItemListなどのオブジェクトを調べようとすると、サイトがクラッシュするか(ホワイトページ)、大量のデータが生成され、リストを展開するスクリプトが機能しなくなります。

これらの問題を回避するにはどうすればよいですか?

7
Hendrik

エンティティとフィールドを操作する場合、オブジェクトではなくvaluesを表示する必要があります。

エンティティの場合は$entity->toArray()を使用し、フィールドオブジェクトの場合は$field->getValue()を使用します。これをほぼ1:1に変換して、オブジェクトのこれらの値にアクセスできます。 $ entity-> field_name-> property。

エンティティ参照フィールドの-> entityなどの計算されたプロパティなど、いくつかは表示されていません。全体的な概要については https://wizzlern.nl/drupal/drupal-8-entity-cheat-sheet を参照してください。

とは言っても、デバッグ関数よりもIDE + xdebugを強くお勧めします。これを使用するだけで、時には単純なdebug()を使用します。これは、上記の方法。

8
Berdir

最初の問題は、Kintが深くなる配列/オブジェクトの最大レベルを変更することで一時的に修正できます。現在、これはまだモジュール内のコードの1行を変更することによって行う必要があります。既に問題があります https://www.drupal.org/node/2405179 これを構成可能な設定にすること。

devel/kint/kint/config.default.phpで、7を問題のない任意の数に変更します。通常は4に設定します。

/** @var int max array/object levels to go deep, if zero no limits are applied */
$_kintSettings['maxLevels'] = 7;

この番号は、Develモジュールを更新するとすぐにリセットされることに注意してください。

9
leymannx

Develモジュールは優れたツールですが、すべての状況で機能するわけではありません。実際には、デバッグ用のモジュールtwigとして知られています Twig XDebug (まだ実装されていません)。

または

IDEでxdebugerを手動でインストールします。

無料で利用できるIDE:

  • ネットビーンズ

  • 日食

  • Aptana Studio(Eclipse派生)

有料IDE:

  • phpDesigner

  • Jetbrains PHPStorm

  • コモドIDE(いくつかの無料/柔軟な価格設定シナリオがあります)。

IDEを選択した後の次のステップ

  1. Xdebugをインストールする

  2. Php.ini設定を変更してxdebugを有効にします

  3. IDEをインストールし、xdebugとブラウザーを使用するように構成します。

  4. おそらく、xdebugのブラウザープラグイン。例- ChromeのXdebugヘルパー

4
Ashish Deynap

マウスのクリックには注意してください。クリックしないでください。 + アイコン!これにより、すべてのレベルが拡張され、時間がかかる場合があります。タイトルバーをクリックすると、最上位のみが展開されます。

Drupal 8デバッグ:KintでのKreful Klicking

4
4k4