Toby Inkster > Class-Method-ModifiersX-Override-0.001 > Class::Method::ModifiersX::Override

Download:
Class-Method-ModifiersX-Override-0.001.tar.gz

Dependencies

Annotate this POD

Website

CPAN RT

New  1
Open  0
View/Report Bugs
Module Version: 0.001   Source   Latest Release: Class-Method-ModifiersX-Override-0.002

NAME ^

Class::Method::ModifiersX::Override - adds "override method => sub {...}" support to Class::Method::Modifiers

SYNOPSIS ^

   use v5.14;
   use strict;
   use Test::More;
   
   package Foo {
      sub new { bless []=> shift }
      sub foo { return "foo" }
   }
   
   package Foo::Bar {
      BEGIN { our @ISA = 'Foo' }
      use Class::Method::ModifiersX::Override;
      override foo => sub {
         return uc super;
      };
   }
   
   is( Foo::Bar->new->foo, "FOO" );
   done_testing();

(Note that the synopsis shows Perl v5.14+ syntax for package declaration, but this module and its accompanying Moo and Role::Tiny wrappers support Perl v5.8 and above.)

DESCRIPTION ^

Class::Method::ModifiersX::Override extends Class::Method::Modifiers with the override method modifier, allowing you to use this Moose syntactic sugar for overriding superclass methods in non-Moose classes.

See Moose::Manual::MethodModifiers for details of how override and its companion function super work.

This module exports two functions:

override NAME, CODE
super

If you want to use these with Moo classes or role, or with Role::Tiny roles, please look at MooX::Override or Role::TinyX::Override instead.

CAVEATS ^

This implementation of override piggybacks onto Class::Method::Modifiers' implementation of around. As a result, when multiple method modifiers are applied to the same method, the order in which they are applied might not match Moose, where override modifiers are "innermost".

Given that this implementation of override piggybacks onto around, there's almost no reason to use it; you can just use around instead. This module mostly exists as an answer to people who complain that Moo doesn't support override/super, but it may also be helpful porting Moose code to Moo.

BUGS ^

Please report any bugs to http://rt.cpan.org/Dist/Display.html?Queue=Class-Method-ModifiersX-Override.

DEPENDENCIES ^

Class::Method::ModifiersX::Override requires Perl 5.008, and the Class::Method::Modifiers package (which is available from CPAN).

The accompanying modules MooX::Override and Role::TinyX::Override require Moo and Role::Tiny respectively. However, the installation scripts for this distribution do not check that these are installed. If you use MooX::Override or Role::TinyX::Override, it is assumed that you have installed their dependencies separately.

SEE ALSO ^

Moose::Manual::MethodModifiers, Class::Method::Modifiers, MooX::Override, Role::TinyX::Override.

AUTHOR ^

Toby Inkster <tobyink@cpan.org>.

COPYRIGHT AND LICENCE ^

This software is copyright (c) 2012 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.

DISCLAIMER OF WARRANTIES ^

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.

syntax highlighting: