drupal 8では、イベントサブスクライバーを使用できるようになりました。その理由は何ですか?新しいキャッシュAPIでよりうまく機能するためですか?
最近、表示されたときにノードからデータを抽出する必要がありましたが、hook_node_view()
は(ほとんどすべてのように)キャッシュされ、Drupal 8にキャッシュされます。イベントサブスクライバーの使用なぜイベントサブスクライバーを使用する方が優れたソリューションなのですか?それは、オブジェクト指向であることだけですか?
これは2つの観点から見ることができます。最初にDrupalと通信する方法を探している人は、存在するフックとイベントを使用しています。2番目は、これらのAPIを設計する開発者のものです。
Drupalは両方の中間にあり、一方はDrupalはSymfony APIのコンシューマーであり、ほとんどすべてのコードはSymfonyイベントに配置され、もう一方はDrupalは、レガシーフックまたはカスタムのSymfonyイベント、およびプラグインのような他のメソッドの形式でAPIを提供します。
Drupal APIのいずれかを使用していない可能性があります。SymfonyカーネルイベントKernelEvents::REQUEST
。次に、Drupal開発者と同じ位置にいます。Symfonyはフックを提供していないため、これはフックやイベントに関する質問ではありません。
Drupal APIのいずれかを使用している場合でも、選択肢は多くありません。提供されているものを選択する必要があります。対話するためにモジュールでAPIを設計する場合のみ他のモジュールでは、イベントまたはフックを選択できます。