Mojo::Base

Название

Mojo::Base - Минимальный класс для проектов Mojo(Mojolicious)

Синопсис

    package Car;
    use base 'Mojo::Base';
     
    # создание метода 'driver' в пакете Car
    __PACKAGE__->attr('driver');

    # создание метода 'doors' в пакете Car
    # который должен возвращать значение '2' 
    __PACKAGE__->attr('doors' => 2);

    # создание методов 'passengers' и 'seats' в пакете Car
    # каждый из них представляет собой подпрограмму sub { 2 }
    __PACKAGE__->attr([qw/passengers seats/] => sub { 2 });

    package main;

    my $bmw = Car->new;

    # метод doors возвращает неопределенное значение
    print $bmw->doors;

    # метод doors() присваивает значение '5', которое он затем
    # возвратит в последующем обращении к нему 
    #
    print $bmw->doors(5)->doors;
    
    # создание метода 'driver' в пакете Car
    # который должен возвращать значение 'Sebastian' 
    my $mercedes = Car->new(driver => 'Sebastian');
   
    # метод passengers содержит значение '2'
    # которое замещается значением '7'
    print $mercedes->passengers(7)->passengers;

Описание

Mojo::Base - предоставляет простой способ создания новых методов класса.

Методы

new

new - основной конструктор объектов Mojo.

  • NamePackage->new()

    Если констуктору new не переданы параметры, методы объекта будут возвращать значения по умолчанию.

  • NamePackage->new('name_method' => 'value')
  • NamePackage->new({ 'name_method' => 'value' })

    Чтобы заместить значения по умолчанию для методов объекта, нужно передать конструктору new хэш атрибутов или ссылку на хэш атрибутов.

    package Car;
    use base 'Mojo::Base';

    __PACKAGE__->attr( driver => 'Вася' );

    package main;
    
    # создаем объект
    my $bmw = Car->new;

    # метод driver возвращает Васю 
    print $bmv->driver, "\n";
    
    # создаем объект и замещаем значение по умолчанию 
    # возвращаемое методом driver
    my $bmv = Car->new(driver => 'Петя');

    # метод driver возвращает Петю 
    print $bmv->driver, "\n";

attr

Конструктор attr создает в текущем пакете новые методы.

    package Car;
    use base 'Mojo::Base';

    __PACKAGE__->attr('name');
    __PACKAGE__->attr([qw/name1 name2 name3/]);
    __PACKAGE__->attr(name => 'foo');
    __PACKAGE__->attr(name => sub { ... });
    __PACKAGE__->attr([qw/name1 name2 name3/] => 'foo');
    __PACKAGE__->attr([qw/name1 name2 name3/] => sub { ... });
  • __PACKAGE__->attr('name')
  • __PACKAGE__->attr('name' => 'value')

    Создается метод name. Cтрока name должна соответствовать шаблону /^[a-zA-Z_]\w*$/ . Второй необязательный параметр value - атрибут метода.

  • __PACKAGE__->attr([qw/name1 name2 name3/])
  • __PACKAGE__->attr([qw/name1 name2 name3/] => 'value')
  • __PACKAGE__->attr([qw/name1 name2 name3/] => sub{ ... })

    Каждый из элементов [qw/name1 name2 name3/] - имя метода который нужно создать.

    Второй необязательный параметр - значение 'value' - будет возвращаться при вызове метода либо ссылка на подпрограмму sub{ ... } - будет выполняется при вызове указанного в первом параметре метода.

Дополнительная информация

Mojolicious, Mojolicious::Book, http://mojolicious.org.

Statistic

About this Entry

This page contains a single entry by Dinar published on February 25, 2010 4:00 PM.

Lingua::RU::Inflect is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.