X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2Fmoose-presentations.git;a=blobdiff_plain;f=moose-class%2Fslides%2Findex.html;fp=moose-class%2Fslides%2Findex.html;h=e3814b78837583319bfb14b980b4d1a9edde0993;hp=2ad8bbbae665122e151e1abf1fab5170c0c43a3f;hb=3258951f22a6aed1774ec682fe4ad1365e154405;hpb=e95801c6646fa0ed1ecd7b95727821bdee00ebdf
diff --git a/moose-class/slides/index.html b/moose-class/slides/index.html
index 2ad8bbb..e3814b7 100644
--- a/moose-class/slides/index.html
+++ b/moose-class/slides/index.html
@@ -3373,82 +3373,6 @@ $person->account->deposit(100);
-
Traits and Metaclasses
-
-
- - The ultimate in customization
- - Per attribute metaclasses
- - Per attribute roles applied to the attribute metaclass
- - Change the meta-level behavior
-
-
-
-
-
Traits and Metaclasses
-
-
- - The default metaclass is
Moose::Meta::Attribute
- - Controls accessor generation, defaults, delegation, etc.
- - Adding a role to this metaclass (or replacing it) allows for infinite customization
-
-
-
-
-
Traits and Metaclasses
-
-
- - Can add/alter/remove an attribute parameter (from
has
)
- - Can change behavior of created attribute
-
-
-
-
-
Simple Trait Example
-
-
package Person;
-use Moose;
-use MooseX::LabeledAttributes;
-
-has ssn => (
- traits => [ 'Labeled' ],
- is => 'ro',
- isa => 'Str',
- label => 'Social Security Number',
-);
-print Person->meta
- ->get_attribute('ssn')->label;
-
-
-
-
Simple Metaclass Example
-
-
package Person;
-use Moose;
-use MooseX::LabeledAttributes;
-
-has ssn => (
- metaclass =>
- 'MooseX::Meta::Attribute::Labeled',
- is => 'ro',
- isa => 'Str',
- label => 'Social Security Number',
-);
-print Person->meta
- ->get_attribute('ssn')->label;
-
-
-
-
Traits vs Metaclass
-
-
- - Can apply any mix of traits to an attribute
- - But just one metaclass
- - Traits (aka roles) can cooperate
- - Metaclasses require you to pick just one
-
-
-
-
Advanced Attributes Summary
@@ -3456,7 +3380,6 @@ print Person->meta
- Use trigger to do an action post-attribute write
- Use delegations to hide "internal" objects
- Use native delegations to treat Perl types as objects
- - Traits and metaclasses let you extend Moose's core attribute features