【Drupal 10.2新機能】プラグインタイプでAnnotationsの代わりにAttributesを使う

【Drupal 10.2新機能】プラグインタイプでAnnotationsの代わりにAttributesを使う
sinceretechnology

 

 

 

Drupal10.2が2023年の年末にリリースされました。2024年2月現時点での最新版はDrupal10.2.23です。

少し前からDrupalのバージョンが10.0.11から全く更新されないという現象に悩まされていましたが、こちらの記事の通りなんとか解決しました。そこで、今回は新しくマイナーアップデートされたDrupal10.2の新機能を少しだけ試してみたいと思います。

 

今回検証するDrupal10.2に新機能というのは、プラグインタイプなどで広く使われているDoctrine Annotationsの代わりに、新しく使用できるようになったAttributesです。新しい機能というよりもPHP8でAttributesが使用できるようになったため、Drupalでもメンテナンス性を考慮してAttributesを採用したといったところでしょうか。

 

Doctrine AnnotationsはDrupal 10中に非推奨なっており、Drupal 11で削除されるそうです。Drupal11のリリースは、2024年6月頃に遅くても年末までのようなので、なるべく早く新しい機能に置き替えていきたいところです。

ただ現時点では、新機能に対応しているプラグインタイプは限られているので、公式サイトで調べてから対応しないと修正したのでプラグインタイプが検出されないとかで時間を取られそうです。(コアではBlockとActionのみがAttributesに対応)

 

 

 

コードサンプル

 

Doctrine Annotationsの代わりに、新しく使用できるようになったAttributesを使用して、ブロックプラグインタイプを変更した例です。

コメント内に 記述していたブロック情報を削除して、PHP8移行で導入されたAtrributesを使用して記述しています。

 

 

Drupal 10.1以前

 

web/modules/custom/scraping_module/src/Plugin/Block/ShowUserBlock.php
 
<?php
namespace Drupal\scraping_module\Plugin\Block;

use Drupal\Core\Block\BlockBase;

/**
 ** Privide Show user name
 *
 *  @Block(
 *  id = "ShowUser_block",
 *  admin_label = @Translation("ShowUser_Block"),
 *  )
 */

class ShowUserBlock extends BlockBase {

 

 

Drupal 10.2以降

 

web/modules/custom/scraping_module/src/Plugin/Block/ShowUserBlock.php
 
<?php
namespace Drupal\scraping_module\Plugin\Block;

use Drupal\Core\Block\BlockBase;
use Drupal\Core\Block\Attribute\Block;
use Drupal\Core\StringTranslation\TranslatableMarkup;

/**
 ** Privide Show user name
 */
#[Block(
  id : "ShowUser_block",
  admin_label : new TranslatableMarkup("ShowUser_Block"),
)]

class ShowUserBlock extends BlockBase {
 

 

 

参照

 

2024年のDrupalについて

https://www.php.net/manual/ja/language.attributes.overview.php

 

 

 

 


この記事に関するご質問やご意見などございましたらお問い合わせフォームからお気軽にご連絡ください。