存在自体は知っていたが、初めて使ってみたので、備忘録を残す。

ジェネレータ

関数において、returnではなくyieldを返すことで、関数の実行を一時的に停止して、その時点の値を返却する仕組みのこと。
繰り返し処理などでよく利用される。

function generator_function () {
  for ($i = 0; $i < 3; $i++) {
    yield $i;
  }
}

$gen = generator_function();
foreach ($gen as $g) {
  echo $g; // 1, 2, 3
}

トレイト

クラスとは別の単位で機能を再利用できるようにする仕組みのこと。

  1. 機能をパーツとして使い回すパターン
  2. Interfaceと一緒に使うことでデフォルトの実装を提供するパターン
  3. 機能をグルーピングすることによって、可読性を向上するパターン

引用:https://qiita.com/kazuhei/items/dd4e275c03eb6916f522

上記のような使用パターンがある。

trait basicMethod () {
  function func_a {}
}

class ExampleClass () {
  use basicMethod;
}