X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoose%2FManual.pod;h=f50ca632e5501a18434bb88fd643a498d8228e83;hb=48ac876af2c1991bd6cdba0d54b775a121e01725;hp=63379dbe3b892b756f15597d42a69d9c4819e350;hpb=e829ab9ca5e6127227ca3172be8ad9129be2a5a5;p=gitmo%2FMoose.git diff --git a/lib/Moose/Manual.pod b/lib/Moose/Manual.pod index 63379db..f50ca63 100644 --- a/lib/Moose/Manual.pod +++ b/lib/Moose/Manual.pod @@ -1,31 +1,35 @@ -=pod +package Moose::Manual; + +# ABSTRACT: What is Moose, and how do I use it? -=head1 NAME +__END__ -Moose::Manual - What is Moose, and how do I use it? +=pod -=head2 DESCRIPTION +=head1 WHAT IS MOOSE? -Go read L. This POD document still exists for the -benefit of anyone out there who might've linked to it in the past. +Moose is a I object system for Perl 5. Consider any modern +object-oriented language (which Perl 5 definitely isn't). It provides +keywords for attribute declaration, object construction, inheritance, +and maybe more. These keywords are part of the language, and you don't +care how they are implemented. Moose aims to do the same thing for Perl 5 OO. We can't actually create new keywords, but we do offer "sugar" that looks a lot like -them. More importantly, with Moose, you I your -class, without needing to know about blessed hashrefs, accessor -methods, and so on. +them. More importantly, with Moose, you I, without needing to know about blessed hashrefs, +accessor methods, and so on. -Moose helps you define the I structure of your classes, so -you can focus on "what" rather than "how". With Moose, a class -definition reads like a list of very concise English sentences. +With Moose, you can concentrate on the I structure of your +classes, focusing on "what" rather than "how". A class definition with +Moose reads like a list of very concise English sentences. -Moose is built in top of C, a meta-object protocol (aka +Moose is built on top of C, a meta-object protocol (aka MOP). Using the MOP, Moose provides complete introspection for all Moose-using classes. This means you can ask classes about their attributes, parents, children, methods, etc., all using a well-defined -API. The MOP abstracts away tedious digging about in the Perl symbol -table, looking at C<@ISA> vars, and all the other crufty Perl tricks -we know and love(?). +API. The MOP abstracts away the symbol table, looking at C<@ISA> vars, +and all the other crufty Perl tricks we know and love(?). Moose is based in large part on the Perl 6 object system, as well as drawing on the best ideas from CLOS, Smalltalk, and many other @@ -34,12 +38,11 @@ languages. =head1 WHY MOOSE? Moose makes Perl 5 OO both simpler and more powerful. It encapsulates -all the tricks of Perl 5 power users in high-level declarative APIs -which are easy to use, and doesn't require any special knowledge of -how Perl works under the hood. +Perl 5 power tools in high-level declarative APIs which are easy to +use. Best of all, you don't need to be a wizard to use it. -If you want to dig about in the guts, Moose lets you do that too, by -using and extending its powerful introspection API. +But if you want to dig about in the guts, Moose lets you do that too, +by using and extending its powerful introspection API. =head1 AN EXAMPLE @@ -98,7 +101,7 @@ We'll leave the line-by-line explanation of this code to other documentation, but you can see how Moose reduces common OO idioms to simple declarative constructs. -=head2 TABLE OF CONTENTS +=head1 TABLE OF CONTENTS This manual consists of a number of documents. @@ -109,6 +112,11 @@ This manual consists of a number of documents. Introduces Moose concepts, and contrasts them against "old school" Perl 5 OO. +=item L + +Shows two example classes, each written first with Moose and then with +"plain old Perl 5". + =item L How do you make use of Moose in your classes? Now that I'm a Moose, @@ -122,13 +130,13 @@ features! =item L -Delegation is a powerful way to make use of attribute which are +Delegation is a powerful way to make use of attributes which are themselves objects. =item L Learn how objects are built in Moose, and in particular about the -C, C methods. Also covers object destruction +C and C methods. Also covers object destruction with C. =item L @@ -155,22 +163,42 @@ children, methods, attributes, etc. =item L -This document shows a few of the most useful Moose extensions on CPAN. +This document describes a few of the most useful Moose extensions on +CPAN. + +=item L + +Moose has a lot of features, and there's definitely more than one way +to do it. However, we think that picking a subset of these features +and using them consistently makes everyone's life easier. + +=item L + +Frequently asked questions about Moose. + +=item L + +Interested in hacking on Moose? Read this. + +=item L + +This document details backwards-incompatibilities and other major +changes to Moose. =back =head1 JUSTIFICATION -If you're still still asking yourself "Why do I need this?", then this +If you're still asking yourself "Why do I need this?", then this section is for you. =over 4 =item Another object system!?!? -Yes, I know there are many, many ways to build objects in Perl 5, many -of them based on inside-out objects and other such things. Moose is -different because it is not a new object system for Perl 5, but +Yes, we know there are many, many ways to build objects in Perl 5, +many of them based on inside-out objects and other such things. Moose +is different because it is not a new object system for Perl 5, but instead an extension of the existing object system. Moose is built on top of L, which is a metaclass system @@ -190,17 +218,18 @@ Yes. Moose has been used successfully in production environments by many people and companies. There are Moose applications which have been in -production with little or no issue now for well years. We consider it -highly stable and we are commited to keeping it stable. +production with little or no issue now for years. We consider it +highly stable and we are committed to keeping it stable. Of course, in the end, you need to make this call yourself. If you -have any questions or concerns, please feel free to email Stevan, the -moose@perl.org list, or just stop by irc.perl.org#moose and ask away. +have any questions or concerns, please feel free to email Stevan or +the moose@perl.org list, or just stop by irc.perl.org#moose and ask +away. =item Is Moose just Perl 6 in Perl 5? No. While Moose is very much inspired by Perl 6, it is not itself Perl -6. Instead, it is an OO system for Perl 5. Stevan built Moose because +6. Instead, it is an OO system for Perl 5. Stevan built Moose because he was tired of writing the same old boring Perl 5 OO code, and drooling over Perl 6 OO. So instead of switching to Ruby, he wrote Moose :) @@ -221,18 +250,4 @@ Nuff Said. =back -=head1 AUTHOR - -Dave Rolsky Eautarch@urth.orgE and Stevan Little -Estevan@iinteractive.comE - -=head1 COPYRIGHT AND LICENSE - -Copyright 2008 by Infinity Interactive, Inc. - -L - -This library is free software; you can redistribute it and/or modify -it under the same terms as Perl itself. - =cut