X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=moose-class%2Fslides%2Findex.html;h=6c0e0b0cdf7d566016517118d200fe90af3307e5;hb=f28e0a12c2f3f8d2380386202bd2d35fee215086;hp=f0bea945bdc2ed3af89a7e2656f5d5c4b61b37ad;hpb=16efce7add3d43007e40a85e9681cb3468ad93a2;p=gitmo%2Fmoose-presentations.git diff --git a/moose-class/slides/index.html b/moose-class/slides/index.html index f0bea94..6c0e0b0 100644 --- a/moose-class/slides/index.html +++ b/moose-class/slides/index.html @@ -52,7 +52,7 @@ img#me05 {top: 43px;left: 36px;}

Introduction to Moose

-

git://git.moose.perl.org/moose-presentations.git

+

Dave Rolsky

@@ -71,7 +71,8 @@ img#me05 {top: 43px;left: 36px;}
@@ -154,7 +155,7 @@ img#me05 {top: 43px;left: 36px;}
package Person;
 use Moose;
 
-has first_name => ( is => 'rw' );
+has first_name => ( is => 'ro' ); @@ -218,7 +219,7 @@ use Moose; @@ -300,8 +301,8 @@ has blog_uri => ( handles => { 'blog_host' => 'host' }, ); -$person->blog_host; -# really calls $person->blog_uri->host +$person->blog_host; +# really calls $person->blog_uri->host
@@ -892,8 +893,8 @@ use Moose;

BUILDARGS

@@ -955,7 +956,7 @@ sub BUILD {
  • Calls Person->BUILDARGS(@_) to turn @_ into a hashref
  • Blesses a reference
  • Populates attributes based on the hashref from #1
  • -
  • Calls $new_object->BUILDALL($constructor_args) +
  • Calls $new_object->BUILDALL($constructor_args)
    ... which calls all BUILD methods
  • Returns the object
  • @@ -967,6 +968,7 @@ sub BUILD {
    @@ -976,6 +978,7 @@ sub BUILD { @@ -1039,6 +1042,7 @@ extends 'LWP'; @@ -1050,13 +1054,13 @@ use Moose; extends 'Person'; -override work => sub { +override work => sub { my $self = shift; die "Pay me first" unless $self->got_paid; - super(); -}; + super(); +};
    @@ -1065,7 +1069,7 @@ use Moose;
    @@ -1107,8 +1111,7 @@ has first_name => ( is => 'ro' ); my $person = Person->new( first_name => 'Dave' ); -$person->first_name('Stevan'); -print $person->first_name; # Dave +$person->first_name('Stevan'); # dies @@ -1127,7 +1130,7 @@ print $person->first_name; # Dave use Moose; # true -Person->can('extends'); +Person->can('extends'); @@ -3473,7 +3478,7 @@ $person->account->deposit(100);

    Traits and Metaclasses

    @@ -3531,15 +3536,12 @@ print Person->meta
  • Use weak_ref to avoid circular references
  • 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
  • -

    Questions?

    -
    - -

    Exercises

    # cd exercises
    @@ -3549,12 +3551,20 @@ print Person->meta
     Iterate til this passes all its tests
    -
    -

    Part 7: Introspection

    +
    +

    CYOA

    + +

    + If there is time, keep going ... +

    + +

    + Otherwise, jump to slide 269 ... +

    -

    Part 8: A Brief Tour of MooseX

    +

    Bonus: A Brief Tour of MooseX

    @@ -3562,7 +3572,7 @@ Iterate til this passes all its tests
    • Not comprehensive
    • -
    • 128 MooseX distributions on CPAN as of 09/24/2009
    • +
    • 177 MooseX distributions on CPAN as of 09/21/2010
    • Some of them are crap
    @@ -3672,7 +3682,7 @@ use Moose; has file => ( is => 'ro', required => 1 ); has filters => - ( is => 'ro', isa => 'Str' ); + ( is => 'ro', isa => 'ArrayRef[Str]' ); sub run { ... }
    @@ -3688,7 +3698,7 @@ sub run { ... } use App::CLI; -App::CLI->new_with_options()->run(); +App::CLI->new_with_options()->run();
    $ myapp-cli \
        --file foo \
    @@ -3748,12 +3758,21 @@ with HasCollection => { type => 'Int' };

    Questions?

    -
    -

    Part 9: Writing Moose Extensions

    -
    +
    +

    Moose-using Modules

    -
    -

    The End

    +

    + For further reading, a few modules which use Moose ... +

    + +
    @@ -3766,10 +3785,14 @@ with HasCollection => { type => 'Int' };
  • mailing list - moose@perl.org
  • Slides and exercises are in Moose's git repo:
    - git://jules.scsys.co.uk/gitmo/moose-presentations
  • + git://jules.scsys.co.uk/gitmo/moose-presentations
    +
    +

    The End

    +
    +