Type::Tiny::Class(3) User Contributed Perl Documentation Type::Tiny::Class(3)

Type::Tiny::Class - type constraints based on the "isa" method

This module is covered by the Type-Tiny stability policy.

Type constraints of the general form "{ $_->isa("Some::Class") }".

This package inherits from Type::Tiny; see that for most documentation. Major differences are listed below:

"new"
When the constructor is called on an instance of Type::Tiny::Class, it passes the call through to the constructor of the class for the constraint. So for example:

   my $type = Type::Tiny::Class->new(class => "Foo::Bar");
   my $obj  = $type->new(hello => "World");
   say ref($obj);   # prints "Foo::Bar"
    

This little bit of DWIM was borrowed from MooseX::Types::TypeDecorator, but Type::Tiny doesn't take the idea quite as far.

"class"
The class for the constraint.
"constraint"
Unlike Type::Tiny, you cannot pass a constraint coderef to the constructor. Instead rely on the default.
"inlined"
Unlike Type::Tiny, you cannot pass an inlining coderef to the constructor. Instead rely on the default.
"parent"
Parent is automatically calculated, and cannot be passed to the constructor.

"plus_constructors($source, $method_name)"
Much like "plus_coercions" but adds coercions that go via a constructor. (In fact, this is implemented as a wrapper for "plus_coercions".)

Example:

   package MyApp::Minion;
   
   use Moose; extends "MyApp::Person";
   
   use Types::Standard qw( HashRef Str );
   use Type::Utils qw( class_type );
   
   my $Person = class_type({ class => "MyApp::Person" });
   
   has boss => (
      is     => "ro",
      isa    => $Person->plus_constructors(
         HashRef,     "new",
         Str,         "_new_from_name",
      ),
      coerce => 1,
   );
   
   package main;
   
   MyApp::Minion->new(
      ...,
      boss => "Bob",  ## via MyApp::Person->_new_from_name
   );
   
   MyApp::Minion->new(
      ...,
      boss => { name => "Bob" },  ## via MyApp::Person->new
   );
    

Because coercing "HashRef" via constructor is a common desire, if you call "plus_constructors" with no arguments at all, this is the default.

   $classtype->plus_constructors(HashRef, "new")
   $classtype->plus_constructors()  ## identical to above
    

This is handy for Moose/Mouse/Moo-based classes.

"stringifies_to($constraint)"
See Type::Tiny::ConstrainedObject.
"numifies_to($constraint)"
See Type::Tiny::ConstrainedObject.
"with_attribute_values($attr1 => $constraint1, ...)"
See Type::Tiny::ConstrainedObject.

Please report any bugs to <http://rt.cpan.org/Dist/Display.html?Queue=Type-Tiny>.

Type::Tiny::Manual.

Type::Tiny.

Moose::Meta::TypeConstraint::Class.

Toby Inkster <tobyink@cpan.org>.

This software is copyright (c) 2013-2014, 2017-2020 by Toby Inkster.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.

2020-10-28 perl v5.34.0