Rechercher une page de manuel
Moose::Cookbook::Snack::Keywords.3pm
Langue: en
Version: 2009-04-20 (debian - 07/07/09)
Section: 3 (Bibliothèques de fonctions)
Sommaire
NAME
Moose::Cookbook::Snack::Keywords - Restricted "keywords" in MooseDESCRIPTION
Moose exports a number of sugar functions in order to emulate Perl built-in keywords. These can cause clashes with other user-defined functions. This document provides a list of those keywords for easy reference.The 'meta' keyword
While most collisions can be avoided, you cannot avoid importing a "meta" method when you "use Moose". If you try to override or change what "meta" does, you could end up breaking Moose internals.Moose Keywords
If you are using Moose or Moose::Role its best to avoid these keywords:- extends
- with
- has
- before
- after
- around
- super
- override
- inner
- augment
- confess
- blessed
Moose::Util::TypeConstraints Keywords
If you are using Moose::Util::TypeConstraints its best to avoid these keywords- type
- subtype
- class_type
- role_type
- maybe_type
- as
- where
- message
- optimize_as
- coerce
- from
- via
- enum
- find_type_constraint
- register_type_constraint
Avoiding collisions
Turning off MooseTo remove the sugar functions Moose exports just add "no Moose" at the bottom of your code:
package Thing; use Moose; # code here no Moose;
This will unexport the sugar functions that Moose originally exported. The same will also work for Moose::Role and Moose::Util::TypeConstraints.
Sub::Exporter features
Moose, Moose::Role and Moose::Util::TypeConstraints all use Sub::Exporter to handle all their exporting needs. This means that all the features that Sub::Exporter provides are also available to them.
For instance, with Sub::Exporter you can rename keywords, like so:
package LOL::Cat; use Moose 'has' => { -as => 'i_can_haz' }; i_can_haz 'cheeseburger' => ( is => 'rw', trigger => sub { print "NOM NOM" } ); LOL::Cat->new->cheeseburger('KTHNXBYE');
See the Sub::Exporter docs for more information.
namespace::clean
You can also use namespace::clean to clean up your namespace, but you must be careful not to remove "meta" when doing so:
package Foo; use Moose; use namespace::clean -except => 'meta'; # ...
SEE ALSO
- Moose
- Moose::Role
- Moose::Utils::TypeConstraints
- Sub::Exporter
- namespace::clean
AUTHOR
John Goulah "<jgoulah@cpan.org<gt">Stevan Little <stevan@iinteractive.com>
COPYRIGHT AND LICENSE
Copyright 2006-2009 by Infinity Interactive, Inc.<http://www.iinteractive.com>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre