February 2010 Archives

Mojo::Base
категория: Mojolicious

Название

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 Archive

This page is an archive of entries from February 2010 listed from newest to oldest.

March 2010 is the next archive.

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