すべてのクラスの基底クラスである UNIVERSAL
パッケージに用意されている can()
メソッドを使用すると、あるクラス(あるはそのオブジェクト)にあるメソッドが定義されているかを調べることができます。
if (UNIVERSAL::can($obj, "greet")) {
print "This obj can greet().\n";
}
$obj
が bless されていることが保証されるのであれば、次のようにメソッドとして呼び出せます。
if ($obj->can("greet")) {
...
}
UNIVERSAL
パッケージに定義されているメソッドを引数にして UNIVERSAL::can
を呼び出すと、必ず真を返します。
if ($obj->can("can")) { # 必ず真
...
}