Check::ISA - DWIM, correct checking of an object's class |
Check::ISA - DWIM, correct checking of an object's class
use Check::ISA;
if ( obj($foo, "SomeClass") ) { $foo->some_method; }
# instead of one of these methods: UNIVERSAL::isa($foo, "SomeClass") # WRONG ref $obj eq "SomeClass"; # VERY WRONG $foo->isa("SomeClass") # May die local $@; eval { $foo->isa("SomeClass") } # too long
This module provides several functions to assist in testing whether a value is an object, and if so asking about its class.
$thing
is an object.
If $class
is provided, it also tests tests whether
$thing->isa($class)
.
$thing
is considered an object if it's blessed, or if it's a GLOB
with a
valid IO
slot (the IO
slot contains a the FileHandle manpage object which is the
actual invocant). This corresponds directly to gv_fetchmethod
.
obj
but uses DOES in the UNIVERSAL manpage instead of isa in the UNIVERSAL manpage.
DOES in the UNIVERSAL manpage is just like isa
, except it's use is encouraged to query
about an interface, as opposed to the object structure. If DOES
is not
overridden by th ebject, calling it is semantically identical to calling
isa
.
This is probably reccomended over obj
for interoperability, but can be
slower on Perls before 5.10.
Note that DOES in the UNIVERSAL manpage
obj_does
, but also returns true for classes.
Note that this method is slower, but is supposed to return true for any value you can call methods on (class, object, filehandle, etc).
Look into autobox if you would like to be able to call methods on all values.
$thing
is an object or class, and calls can
on $thing
if
appropriate.
the UNIVERSAL manpage, the Params::Util manpage, autobox, Moose, asa
This module is maintained using Darcs. You can get the latest version from
http://nothingmuch.woobling.org/code, and use darcs send
to commit
changes.
Yuval Kogman <nothingmuch@woobling.org>
Copyright (c) 2008 Yuval Kogman. All rights reserved This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Check::ISA - DWIM, correct checking of an object's class |