PHPのClosureクラスとは?無名関数を操作する主要メソッドと使い方
はじめに
PHPにおける無名関数(匿名関数、ラムダとも呼ばれます)は、Closure クラスのオブジェクトとして返されます。このクラスには、無名関数をさらに細かく制御するための便利なメソッドが用意されています。
クラスの構文
Closure {
/* メソッド */
private __construct ( void )
public static bind ( Closure $closure , object $newthis [, mixed $newscope = "static" ] ) : Closure
public bindTo ( object $newthis [, mixed $newscope = "static" ] ) : Closure
public call ( object $newthis [, mixed $... ] ) : mixed
public static fromCallable ( callable $callable ) : Closure
}主なメソッドの説明
Closure::__construct
private Closure::__construct ( void ) — Closure クラスの直接インスタンス化を禁止するためにのみ存在するプライベートコンストラクタです。このクラスのオブジェクトが生成されるのは、無名関数を作成したときだけです。
Closure::bind
public static Closure::bind ( Closure $closure , object $newthis [, mixed $newscope = "static" ] ) : Closure — 指定したオブジェクトとクラススコープを束縛したクロージャの複製を作成します。Closure::bindTo() の静的バージョンに相当するメソッドです。
Closure::bindTo
public Closure::bindTo ( object $newthis [, mixed $newscope = "static" ] ) : Closure — 新しいオブジェクトとクラススコープでクロージャを複製します。関数の本体とバインド済み変数はそのままに、異なるオブジェクトと新しいクラススコープを持つ新しい無名関数を生成して返します。
Closure::call
public Closure::call ( object $newthis [, mixed $... ] ) : mixed — クロージャを一時的に newthis オブジェクトへ束縛し、指定された引数を渡してその場で実行します。
Closure::fromCallable
public static Closure::fromCallable ( callable $callable ) : Closure — 通常の関数やメソッドなど、既存の callable から Closure オブジェクトを生成します。コールバックをクロージャとして扱いたい場合に便利です。
Closure の使用例
次の例では、call() メソッドと bindTo() メソッドを使って、オブジェクトのプロパティへアクセスする無名関数を実行しています。
<?php
class A {
public $nm;
function __construct($x){
$this->nm=$x;
}
}
// call() メソッドを使用
$hello = function() {
return "Hello " . $this->nm;
};
echo $hello->call(new A("Amar")). "\n";
// bindTo() メソッドを使用
$sayhello = $hello->bindTo(new A("Amar"),'A');
echo $sayhello();
?>実行結果
上記のプログラムを実行すると、次のような出力が得られます。
Hello Amar Hello Amar
-
C#のObjectクラスとは?全クラスの基底クラスと主要メソッドを徹底解説
C#におけるObjectクラスは、すべてのクラスの継承階層において最も上位に位置する基底クラス(ルートクラス)です。C#で定義されるあらゆる型は、明示的に指定しなくても自動的にObjectクラスを継承しており、そのためすべてのオブジェクトはObjectクラスが提供するメソッドを利用できます。Objectクラスの主なメソッド一覧Objectクラスには、以下のような重要なメソッドが用意されています。番号メソッドと説明1Equals(Object)指定されたオブジェクトが、現在のオブジェクトと等しいかどうかを判定します。2Equals(Object, Object)指定された2つのオブジェクトインス
-
C#のStackクラスとは?主なプロパティとメソッドを徹底解説
Stackクラスとは C#のStackクラスは、後入れ先出し(LIFO:Last-In, First-Out)という仕組みでオブジェクトを管理するコレクションです。スタックでは、最後に追加した要素が最初に取り出されるため、「直近に追加したデータから順番に処理したい」という場面で活用されます。 例えば、操作履歴の「元に戻す(Undo)」機能や、再帰的な処理の一時保存など、LIFO構造が自然にマッチするケースでよく使われています。 Stackクラスの主なプロパティ Count ― スタックに格納されている要素の数を取得します。 Stackクラスの主なメソッド一覧 Stackクラスには、要素