X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=moose-class%2Fslides%2Findex.html;h=7df4bccfed376bb51a3a5ebb063384776b34ad03;hb=cbf2305bcc8357a9450403dc9b24ebdc48c10955;hp=b3fc1414ac85aa9d782f8aa1532cf6a9e9c8976f;hpb=1d40915d1ad2e2a12bc3bbf64a764ffa6f69994a;p=gitmo%2Fmoose-presentations.git diff --git a/moose-class/slides/index.html b/moose-class/slides/index.html index b3fc141..7df4bcc 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

@@ -951,11 +952,11 @@ sub BUILD {
Person->new(@_)
-
    +
    1. Calls Person->BUILDARGS(@_) to turn @_ into a hashref
    2. Blesses a reference
    3. Populates attributes based on the hashref from #1
    4. -
    5. Calls $new_object->BUILDALL($constructor_args) +
    6. Calls $new_object->BUILDALL($constructor_args)
      ... which calls all BUILD methods
    7. 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,8 @@ use Moose;
@@ -1106,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 @@ -1126,7 +1130,7 @@ print $person->first_name; # Dave use Moose; # true -Person->can('extends'); +Person->can('extends'); @@ -3471,7 +3479,7 @@ $person->account->deposit(100);

Traits and Metaclasses

@@ -3529,15 +3537,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
    @@ -3547,12 +3552,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

    @@ -3560,7 +3573,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
    @@ -3569,11 +3582,11 @@ Iterate til this passes all its tests

    Already Mentioned Several

    @@ -3584,8 +3597,8 @@ Iterate til this passes all its tests use 5.10.0; # for say class Person { - has greeting - => ( is => 'ro', isa => 'Str' ); + has greeting => + ( is => 'ro', isa => 'Str' ); method speak { say $self->greeting; @@ -3600,6 +3613,7 @@ class Person {
  • Still experimental-ish, but seeing more and more use
  • Not a source filter!
  • Hooks into the Perl parser rather than filtering all your code
  • +
  • But not supported by PPI, perltidy, etc.
  • (yet?) @@ -3607,7 +3621,7 @@ class Person {

    MooseX::StrictConstructor

    @@ -3669,7 +3683,7 @@ use Moose; has file => ( is => 'ro', required => 1 ); has filters => - ( is => 'ro', isa => 'Str' ); + ( is => 'ro', isa => 'ArrayRef[Str]' ); sub run { ... } @@ -3685,7 +3699,7 @@ sub run { ... } use App::CLI; -App::CLI->new_with_options()->run(); +App::CLI->new_with_options()->run();
    $ myapp-cli \
        --file foo \
    @@ -3745,12 +3759,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 ... +

    + +
    @@ -3763,10 +3786,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

    +
    +