関数:引数に無名関数を使う
    
      $input = array(1, 2, 3, 4, 5, 6);

      // 新たな無名関数を作って、変数に代入する
      $filter_even = function($item) {
          return ($item % 2) == 0;
      };
      // array_filter は、データと関数を受け取る
      $output = array_filter($input, $filter_even);


      // 関数をいったん変数に代入せずに、直接このように書いてもかまわない
      $output = array_filter($input, function($item) {
          return ($item % 2) == 0;
      });

      print_r($output);

    
    
関数型プログラミング:useを使う

関数の返り値を別の関数にする(高階関数)

外部のスコープからインポートした変数に対してグローバル変数を介さずにアクセス

参考リンク:Functional-Programming

参考リンク:関数型プログラミングを噛み砕く

    
      function criteria_greater_than($min)
      {
          return function($item) use ($min) {
              return $item > $min;
          };
      }

      $input = array(1, 2, 3, 4, 5, 6);

      // array_filter を使い、入力値とフィルター関数を指定する
      $output = array_filter($input, criteria_greater_than(3));

      print_r($output); // items > 3

    
    
無名関数とuse

参考リンク:Functional-Programming

    
  $message = 'hello';

  // "use" がない場合
  $example = function () {
      var_dump($message);
  };
  // エラー
  $example();

  // $message を引き継ぎます
  $example = function () use ($message) {
      var_dump($message);
  };
  // 'string(5) "hello" を出力
  $example();
  
  
string(5) "hello" string(15) "メッセージ"
call_user_func_array() を使う!

参考リンク:call_user_func_array

    
      function foobar($arg, $arg2) {
          echo __FUNCTION__, " got $arg and $arg2\n";
      }
      // foobar() 関数に引数を 2 つ渡してコールします
      call_user_func_array("foobar", array("one", "two"));


      class foo {
          function bar($arg, $arg2) {
              echo __METHOD__, " got $arg and $arg2\n";
          }
      }
      // $foo->bar() メソッドに引数を 2 つ渡してコールします
      $foo = new foo;
      call_user_func_array(array($foo, "bar"), array("three", "four"));