# man > Class::MOP::Method::Accessor(3pm)

## NAME
    [Class::MOP::Method::Accessor](https://www.chedong.com/phpMan.php/perldoc/Class%3A%3AMOP%3A%3AMethod%3A%3AAccessor/markdown) - Method Meta Object for accessors

## VERSION
    version 2.2200

## SYNOPSIS
        use [Class::MOP::Method::Accessor](https://www.chedong.com/phpMan.php/perldoc/Class%3A%3AMOP%3A%3AMethod%3A%3AAccessor/markdown);

        my $reader = [Class::MOP::Method::Accessor](https://www.chedong.com/phpMan.php/perldoc/Class%3A%3AMOP%3A%3AMethod%3A%3AAccessor/markdown)->new(
            attribute     => $attribute,
            is_inline     => 1,
            accessor_type => 'reader',
        );

        $reader->body->execute($instance); # call the reader method

## DESCRIPTION
    This is a subclass of "[Class::MOP::Method](https://www.chedong.com/phpMan.php/perldoc/Class%3A%3AMOP%3A%3AMethod/markdown)" which is used by "[Class::MOP::Attribute](https://www.chedong.com/phpMan.php/perldoc/Class%3A%3AMOP%3A%3AAttribute/markdown)" to generate
    accessor code. It handles generation of readers, writers, predicates and clearers. For each type
    of method, it can either create a subroutine reference, or actually inline code by generating a
    string and "eval"'ing it.

## METHODS
    [Class::MOP::Method::Accessor](https://www.chedong.com/phpMan.php/perldoc/Class%3A%3AMOP%3A%3AMethod%3A%3AAccessor/markdown)->new(%options)
        This returns a new "[Class::MOP::Method::Accessor](https://www.chedong.com/phpMan.php/perldoc/Class%3A%3AMOP%3A%3AMethod%3A%3AAccessor/markdown)" based on the %options provided.

        *   attribute

            This is the "[Class::MOP::Attribute](https://www.chedong.com/phpMan.php/perldoc/Class%3A%3AMOP%3A%3AAttribute/markdown)" for which accessors are being generated. This option
            is required.

        *   accessor_type

            This is a string which should be one of "reader", "writer", "accessor", "predicate", or
            "clearer". This is the type of method being generated. This option is required.

        *   is_inline

            This indicates whether or not the accessor should be inlined. This defaults to false.

        *   name

            The method name (without a package name). This is required.

        *   package_name

            The package name for the method. This is required.

    $metamethod->accessor_type
        Returns the accessor type which was passed to "new".

    $metamethod->is_inline
        Returns a boolean indicating whether or not the accessor is inlined.

    $metamethod->associated_attribute
        This returns the [Class::MOP::Attribute](https://www.chedong.com/phpMan.php/perldoc/Class%3A%3AMOP%3A%3AAttribute/markdown) object which was passed to "new".

    $metamethod->body
        The method itself is *generated* when the accessor object is constructed.

## AUTHORS
    *   Stevan Little <<stevan@cpan.org>>

    *   Dave Rolsky <<autarch@urth.org>>

    *   Jesse Luehrs <<doy@cpan.org>>

    *   Shawn M Moore <<sartak@cpan.org>>

    *   יובל קוג'מן (Yuval Kogman) <<nothingmuch@woobling.org>>

    *   Karen Etheridge <<ether@cpan.org>>

    *   Florian Ragwitz <<rafl@debian.org>>

    *   Hans Dieter Pearcey <<hdp@cpan.org>>

    *   Chris Prather <<chris@prather.org>>

    *   Matt S Trout <<mstrout@cpan.org>>

## COPYRIGHT AND LICENSE
    This software is copyright (c) 2006 by Infinity Interactive, Inc.

    This is free software; you can redistribute it and/or modify it under the same terms as the Perl
    5 programming language system itself.

