diff options
author | Ivan Tubert-Brohman <itub@cpan.org> | 2005-10-12 15:20:18 -0400 |
---|---|---|
committer | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2005-10-13 11:20:23 +0000 |
commit | d74e8afc9309529cf5c6c4390fc311850865d506 (patch) | |
tree | e2e6f5cb76495c762f9de01020f6d7eae39011dd /pod/perlobj.pod | |
parent | fab416db1cda0a357b1699b6efa75dd50332ea26 (diff) | |
download | perl-d74e8afc9309529cf5c6c4390fc311850865d506.tar.gz |
POD index entries with X<>
Message-ID: <434D9A32.4050305@cpan.org>
p4raw-id: //depot/perl@25748
Diffstat (limited to 'pod/perlobj.pod')
-rw-r--r-- | pod/perlobj.pod | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/pod/perlobj.pod b/pod/perlobj.pod index f427de7cde..ad99627cb2 100644 --- a/pod/perlobj.pod +++ b/pod/perlobj.pod @@ -1,4 +1,5 @@ =head1 NAME +X<object> X<OOP> perlobj - Perl objects @@ -34,6 +35,7 @@ a package name, for class methods) as the first argument. We'll cover these points now in more depth. =head2 An Object is Simply a Reference +X<object> X<bless> X<constructor> X<new> Unlike say C++, Perl doesn't provide any special syntax for constructors. A constructor is merely a subroutine that returns a @@ -139,6 +141,7 @@ This reports $b as being a BLAH, so obviously bless() operated on the object and not on the reference. =head2 A Class is Simply a Package +X<class> X<package> X<@ISA> X<inheritance> Unlike say C++, Perl doesn't provide any special syntax for class definitions. You use a package as a class by putting method @@ -156,6 +159,7 @@ All classes implicitly inherit from class C<UNIVERSAL> as their last base class. Several commonly used methods are automatically supplied in the UNIVERSAL class; see L<"Default UNIVERSAL methods"> for more details. +X<UNIVERSAL> X<base class> X<class, base> If a missing method is found in a base class, it is cached in the current class for efficiency. Changing @ISA or defining new @@ -167,10 +171,12 @@ all over again, this time looking for a method named AUTOLOAD(). If an AUTOLOAD is found, this method is called on behalf of the missing method, setting the package global $AUTOLOAD to be the fully qualified name of the method that was intended to be called. +X<AUTOLOAD> If none of that works, Perl finally gives up and complains. If you want to stop the AUTOLOAD inheritance say simply +X<AUTOLOAD> sub AUTOLOAD; @@ -184,6 +190,7 @@ by the various classes that might want to do something with the object. The only problem with this is that you can't sure that you aren't using a piece of the hash that isn't already used. A reasonable workaround is to prepend your fieldname in the hash with the package name. +X<inheritance, method> X<inheritance, data> sub bump { my $self = shift; @@ -191,6 +198,7 @@ is to prepend your fieldname in the hash with the package name. } =head2 A Method is Simply a Subroutine +X<method> Unlike say C++, Perl doesn't provide any special syntax for method definition. (It does provide a little syntax for method invocation @@ -228,6 +236,7 @@ and then uses that as an ordinary reference. } =head2 Method Invocation +X<invocation> X<method> X<arrow> X<< -> >> For various historical and other reasons, Perl offers two equivalent ways to write a method call. The simpler and more common way is to use @@ -268,6 +277,7 @@ to start looking for the subroutines in C<Critter>. As a special case of the above, you may use the C<SUPER> pseudo-class to tell Perl to start looking for the method in the packages named in the current class's C<@ISA> list. +X<SUPER> package MyCritter; use base 'Critter'; # sets @MyCritter::ISA = ('Critter'); @@ -282,6 +292,7 @@ I<current package> and not to the superclass(es) of the object. Also, the C<SUPER> pseudo-class can only currently be used as a modifier to a method name, but not in any of the other ways that class names are normally used, eg: +X<SUPER> something->SUPER::method(...); # OK SUPER::method(...); # WRONG @@ -298,6 +309,7 @@ and so is the following: my $fred = (reverse "rettirC")->find(reverse "derF"); =head2 Indirect Object Syntax +X<indirect object syntax> X<invocation, indirect> X<indirect> The other way to invoke a method is by using the so-called "indirect object" notation. This syntax was available in Perl 4 long before @@ -363,6 +375,7 @@ to read code using the indirect object notation, so it's important to be familiar with it. =head2 Default UNIVERSAL methods +X<UNIVERSAL> The C<UNIVERSAL> package automatically contains the following methods that are inherited by all other classes: @@ -370,6 +383,7 @@ are inherited by all other classes: =over 4 =item isa(CLASS) +X<isa> C<isa> returns I<true> if its object is blessed into a subclass of C<CLASS> @@ -379,6 +393,7 @@ class, so don't do it. If you need to determine whether you've received a valid invocant, use the C<blessed> function from L<Scalar::Util>: +X<invocant> X<blessed> if (blessed($ref) && $ref->isa( 'Some::Class')) { # ... @@ -388,6 +403,7 @@ C<blessed> returns the name of the package the argument has been blessed into, or C<undef>. =item can(METHOD) +X<can> C<can> checks to see if its object has a method called C<METHOD>, if it does then a reference to the sub is returned, if it does not then @@ -398,6 +414,7 @@ always return I<undef> if its first argument isn't an object or a class name. The same caveats for calling C<UNIVERSAL::isa> directly apply here, too. =item VERSION( [NEED] ) +X<VERSION> C<VERSION> returns the version number of the class (package). If the NEED argument is given then it will check that the current version (as @@ -421,6 +438,7 @@ You do not need to C<use UNIVERSAL> to make these methods available to your program (and you should not do so). =head2 Destructors +X<destructor> X<DESTROY> When the last reference to an object goes away, the object is automatically destroyed. (This may even be after you exit, if you've @@ -453,6 +471,8 @@ book about object-oriented design methodology, and bang your forehead with it for the next six months or so. =head2 Two-Phased Garbage Collection +X<garbage collection> X<GC> X<circular reference> +X<reference, circular> X<DESTROY> X<destructor> For most purposes, Perl uses a fast and simple, reference-based garbage collection system. That means there's an extra |