web-dev-qa-db-ja.com

クラスコメントの背後にあるメカニズムは何ですか?

 * @QueueWorker(
 *   id = "my_module_image_style",
 *   title = @Translation("Generate image styles"),
 *   cron = {"time" = 60}
 * )

より具体的には

 cron = {"time" = 60}
2
Matoeil

これは実際にはannotationsと呼ばれ、クラスに関するメタデータを提供します。このmetadataは、特定のロジックを実行するためにコードで後で抽出されます。

DrupalコンテキストQueueWorkerは別のプラグインであるため、drupalプラグインであるため、これを抽出するプラグインマネージャを使用して処理されます。 Annotationsからの情報と、それらを使用して、この例のようなロジックを構築します。

  • $ id: QueueWorkerプラグインタイプのインスタンスの一意のID。
  • $ title: some drupalメソッドはAnnotationからタイトルを抽出し、それを使用して人間が読めるプラグインのタイトルを設定します。
  • $ cron:別の関数または同じ関数がannotationからcronを抽出し、私たちに設定しますDrupal cronが呼び出しに費やす時間このワーカーの秒数。デフォルトは15です。

そしてすべてのdrupalプラグインはこのロジックに従います:

  1. このプラグインのプラグインマネージャーDrupal\Core\Queue\QueueWorkerManagerです。これにより、parent:construct() argに設定されている注釈クラスの実装が検出されます4、ウィッチは:(\ Drupal\Core\Annotation\QueueWorker):
  public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler) {
    parent::__construct('Plugin/QueueWorker', $namespaces, $module_handler, 'Drupal\Core\Queue\QueueWorkerInterface', 'Drupal\Core\Annotation\QueueWorker');

  }
  1. @ QueueWorker(注釈クラス):この注釈は\ Drupal\Core\Annotation\QueueWorkerクラスの実装です。ここで、@ QueueWorker =クラス名と注釈属性=クラスプロパティ。

    実際には、このクラスのpeoperty doc Commentに、各注釈属性の説明があります。

   <?php namespace Drupal\Core\Annotation; 
    use Drupal\Component\Annotation\Plugin;  

  class QueueWorker extends Plugin {

  /**
   * The plugin ID.
   *
   * @var string
   */
  public $id;

  /**
   * The human-readable title of the plugin.
   *
   * @ingroup plugin_translatable
   *
   * @var \Drupal\Core\Annotation\Translation
   */
  public $title;

  /**
   * An associative array containing the optional key:
   *   - time: (optional) How much time Drupal cron should spend on calling
   *     this worker in seconds. Defaults to 15.
   *
   * @var array (optional)
   */
  public $cron;

}

3
Marwen Amri

クラスのコメントはAnnotationsです:Annotationとはどういう意味ですか?

  1. 一般的に techopedia.com によると

    注釈とは、コンピュータプログラミングで使用される用語で、コードロジックにあるドキュメントやコメントを指します。コードが実行またはコンパイルされると、注釈は通常無視されます。

  2. Drupalによる Annotations ドキュメントページ:

    クラスの発見とメタデータの説明のための注釈。
    Drupalプラグインシステムには、開発者がモジュールで使用、オーバーライド、および拡張できる一連の再利用可能なコンポーネントがあります。ほとんどのプラグインはアノテーションを使用します。プラグインとそのメタデータの説明(注釈は他の目的にも使用できますが、現時点ではDrupalはプラグインシステムでのみ使用されます)。

多くのフレームワークは、symfonyと同じようにアノテーションを使用します。アノテーションを使用してルートを作成するなど、多くのコンテキストで使用します here

質問に入力した注釈の例は、QueueWorkerプラグイン用です。

cron = {"time" = 60}

cronプロパティの定義QueueWorker::$cronによると QueueWorker :: $ cron 意味:

time:(オプション)時間Drupal cronがこのワーカーの呼び出しに秒単位で費やす必要があります。デフォルトは15です。

6
berramou

これらはアノテーションと呼ばれ、このコンテキストでは プラグインの検出 に使用されます。

この:

cron = {"time" = 60}

QueueWorkerアノテーションのプロパティを示します。具体的には QueueWorker :: $ cron 、つまり:

Drupal cronがこのワーカーの呼び出しに秒単位で費やす時間。デフォルトは15。

4
Clive