Spec-Zone .ru
спецификации, руководства, описания, API
Spec-Zone .ru
спецификации, руководства, описания, API
Библиотека разработчика Mac Разработчик
Поиск

 

Эта страница руководства для  версии 10.9 Mac OS X

Если Вы выполняете различную версию  Mac OS X, просматриваете документацию локально:

Читать страницы руководства

Страницы руководства предназначаются как справочник для людей, уже понимающих технологию.

  • Чтобы изучить, как руководство организовано или узнать о синтаксисе команды, прочитайте страницу руководства для страниц справочника (5).

  • Для получения дополнительной информации об этой технологии, ищите другую документацию в Библиотеке Разработчика Apple.

  • Для получения общей информации о записи сценариев оболочки, считайте Shell, Пишущий сценарий Учебника для начинающих.



Moose::Cookbook::Extending::DebuggingUBaseClassRole(3)PerleDocumentationxtending::Debugging_BaseClassRole(3)



NAME
       Moose::Cookbook::Extending::Debugging_BaseClassRole - Providing a role for the base object class

VERSION
       version 2.0604

SYNOPSIS
         package MooseX::Debugging;

         use Moose::Exporter;

         Moose::Exporter->setup_import_methods(
             base_class_roles => ['MooseX::Debugging::Role::Object'],
         );

         package MooseX::Debugging::Role::Object;

         use Moose::Role;

         sub BUILD {}
         after BUILD => sub {
             my $self = shift;

             warn "Made a new " . ( ref $self ) . " object\n";
         };

DESCRIPTION
       In this example, we provide a role for the base object class that adds some simple debugging output.
       Every time an object is created, it spits out a warning saying what type of object it was.

       Obviously, a real debugging role would do something more interesting, but this recipe is all about
       how we apply that role.

       In this case, with the combination of Moose::Exporter and Moose::Util::MetaRole, we ensure that when
       a module does "use MooseX::Debugging", it automatically gets the debugging role applied to its base
       object class.

       There are a few pieces of code worth looking at more closely.

         Moose::Exporter->setup_import_methods(
             base_class_roles => ['MooseX::Debugging::Role::Object'],
         );

       This creates an "import" method in the "MooseX::Debugging" package. Since we are not actually
       exporting anything, we do not pass "setup_import_methods" any parameters related to exports, but we
       need to have an "import" method to ensure that our "init_meta" method is called. The "init_meta" is
       created by "setup_import_methods" for us, since we passed the "base_class_roles" parameter. The
       generated "init_meta" will in turn call Moose::Util::MetaRole::apply_base_class_roles.

         sub BUILD {}
         after BUILD => sub {
             ...
         };

       Due to the way role composition currently works, if the class that a role is composed into contains a
       "BUILD" method, then that will override the "BUILD" method in any roles it composes, which is
       typically not what you want. Using a method modifier on "BUILD" avoids this issue, since method
       modifiers compose together rather than being overridden. Method modifiers require that a method
       exists in order to wrap, however, so we also provide a stub method to wrap if no "BUILD" method
       exists in the class.

AUTHOR
       Moose is maintained by the Moose Cabal, along with the help of many contributors. See "CABAL" in
       Moose and "CONTRIBUTORS" in Moose for details.

COPYRIGHT AND LICENSE
       This software is copyright (c) 2012 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.



perl v5.16.2                                     2012-09-19::Cookbook::Extending::Debugging_BaseClassRole(3)

Сообщение о проблемах

Способ сообщить о проблеме с этой страницей руководства зависит от типа проблемы:

Ошибки содержания
Ошибки отчета в содержании этой документации со ссылками на отзыв ниже.
Отчеты об ошибках
Сообщите об ошибках в функциональности описанного инструмента или API через Генератор отчетов Ошибки.
Форматирование проблем
Отчет, форматирующий ошибки в интерактивной версии этих страниц со ссылками на отзыв ниже.