Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Наследование и meta информация. Передача meta информации при наследовани 
:(
    Опции темы
ssdm
Дата 16.11.2010, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 13.8.2010

Репутация: 2
Всего: 2



Здравствуйте.  
Проблема в следующем.
Имеется два класса 
Класс 1: 
Код

package BaseID;

use Moose qw/has/;
use Traits::dto;

has [qw/ id /] => (
    is => 'ro',
    isa => 'Int',
    def_show => 1,
    traits => [ qw/dto/],
    order => 1,
);

1


Класс 2
Код

package BaseDTO;

use strict;
use warnings;

sub order{
    my $self = shift;
    my $par=shift;
    my $meta = $self->meta;
    my $attribute=$meta->get_attribute($par); 
    return $attribute->order;   
}

sub get_default_attributes{
    my $self = shift;
    my @tmp;
    foreach($self->meta->get_attribute_list()){
        push (@tmp,$_) if $self->meta->get_attribute($_)->def_show == 1;
    }
    return @tmp;
}

1


От этих двух классов наследуется третий класс :
Код

package User;

use Moose qw/has extends/;
use Moose::Util::TypeConstraints qw/coerce find_type_constraint from via class_type/;
use Traits::dto;

extends qw/BaseID BaseDTO/;

has [qw/ password /] => (
    is => 'ro',
    isa => 'Str',
    def_show => 1,
    traits => [ qw/dto/  ],
    order => 3,
);

has [qw/ login /] => (
    is => 'ro',
    isa => 'Str',
    def_show => 1,
    traits => [ qw/dto/  ],
    order => 2,
);

has [qw/ email/] => (
    is => 'ro',
    isa => 'Any',
    def_show => 1,
    traits => [ qw/dto/  ],
    order => 4,
);

__PACKAGE__->meta->make_immutable;


Далее в коде программы вызываю $obj->meta->get_attribute_list(); , где $obj - объект класса User , но почему то получаю массив состоящий из password,login,email , то есть поле id в список атрибутов не попадает ,хотя наследуется от родителя. 
Собственно, что нужно дописать что бы мета инфа тоже наследовалась?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1628 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.