X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=examples%2FInstanceCountingClass.pod;h=3cf3eb3d50aad8aaec48571c86e1cace58aa8177;hb=afc92ac600289dd8a31b1c4c0a5aa946a2022f1b;hp=93ba4d55fa97d6f448429e4df608eccd8184c627;hpb=9ec169fe90e11be6be8ad2e2e25fa49f82ce72c2;p=gitmo%2FClass-MOP.git diff --git a/examples/InstanceCountingClass.pod b/examples/InstanceCountingClass.pod index 93ba4d5..3cf3eb3 100644 --- a/examples/InstanceCountingClass.pod +++ b/examples/InstanceCountingClass.pod @@ -5,24 +5,19 @@ package # hide the package from PAUSE use strict; use warnings; -use Class::MOP 'meta'; - -our $VERSION = '0.01'; +our $VERSION = '0.03'; use base 'Class::MOP::Class'; -__PACKAGE__->meta->add_attribute( - Class::MOP::Attribute->new('$:count' => ( - reader => 'get_count', - default => 0 - )) -); +InstanceCountingClass->meta->add_attribute('count' => ( + reader => 'get_count', + default => 0 +)); -sub construct_instance { - my ($class, %params) = @_; - $class->{'$:count'}++; - return $class->SUPER::construct_instance(); -} +InstanceCountingClass->meta->add_before_method_modifier('construct_instance' => sub { + my ($class) = @_; + $class->{'count'}++; +}); 1; @@ -38,10 +33,11 @@ InstanceCountingClass - An example metaclass which counts instances package Foo; - sub meta { InstanceCountingClass->initialize($_[0]) } + use metaclass 'InstanceCountingClass'; + sub new { my $class = shift; - bless $class->meta->construct_instance() => $class; + $class->meta->new_object(@_); } # ... meanwhile, somewhere in the code @@ -59,13 +55,15 @@ InstanceCountingClass - An example metaclass which counts instances This is a classic example of a metaclass which keeps a count of each instance which is created. -=head1 AUTHOR +=head1 AUTHORS Stevan Little Estevan@iinteractive.comE +Yuval Kogman Enothingmuch@woobling.comE + =head1 COPYRIGHT AND LICENSE -Copyright 2006 by Infinity Interactive, Inc. +Copyright 2006-2008 by Infinity Interactive, Inc. L