URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 6304
[ Назад ]

Исходное сообщение
"ооп методы"

Отправлено bibi , 22-Апр-09 08:44 
пишу модуль

у меня есть  допустим передается какой-то метод
$self->valid_id

как мне узнать название которое идет после $self->...?

можно ли это получить?


Содержание

Сообщения в этом обсуждении
"ооп методы"
Отправлено angra , 22-Апр-09 08:59 
>есть  допустим передается

Это ты мощно завернул. Иди деточка в школу, пусть тебя там научат выражать свои мысли понятным для всех языком.
Хотя если виной всему вещества, то подожди пока попустит, перечитай заново бред, который ты запостил, и скажи "нет" веществам.


"ооп методы"
Отправлено bibi , 23-Апр-09 05:19 
я не правильно задал, извените

но вот тут нашел http://www.opennet.me/tips/info/415.shtml

я в гугле набрал но ничего не нашел про main функцию


кстате. подскажите... я пишу классы у меня штук 30-40 класво всего

использовал в них почти всегда полиморфизм (псевдо-класс SUPER или next)

подскажите можно ли как-то определить в index.pl в пусковом файле все методы какого-то класса?
и загрузить их по очереди их и какие-то другие (те которые надо, допустим) ....

то есть такой dispatcher как в catalyst?

никто не использовал?


"ооп методы"
Отправлено bibi , 23-Апр-09 05:41 
мне надо было определить функцию вложенности

(caller(1))[3]

1 - это функция от куда была вызвана, 0 - ваша функция
3 - функцию надо

http://perldoc.perl.org/functions/caller.html


"ооп методы"
Отправлено angra , 23-Апр-09 05:42 
Если я смог правильно понять что вы хотите, то вот переделка get_sub_list для выдачи функций из любого namespace, в примере DBI.
#!/usr/bin/perl
use DBI;
print join("\n",&get_sub_list('DBI'));
sub get_sub_list{
  my $m=shift;
  no warnings;
  my ($code,@fn,@a);
  print $m;
  eval('@a=keys(%'.$m.'::);');
  foreach (@a){
    next unless /^[\w_]/;
    push(@fn,$_) if eval('defined(*'.$m.'::'.$_.'{CODE})');
  }
  use warnings;
  @fn
}
Как легко догадаться вместо DBI можно использовать любой модуль.

main:: это namespace основной программы, он используется неявно, если не указан другой посредством package.


"ооп методы"
Отправлено bibi , 23-Апр-09 12:46 
спасибо, да, именно это

а как управлять лкссамаи, кто как управлял классами?

целесобразно ли так писать?

ПРИМЕРНО:

use MyPr::Form::Bla-bla;
use MyPr::Valid::Bla-bla;
use MyPr::Session::Bla-bla;
use MyPr::Bla-bla::Bla-bla;
всего 30-40
...............................


if (defined $param->{form} ) {

    my @m = join("",&get_sub_list('MyPr::Form::'.$param->(form)));
    
   if (defined @m) {
     my @vm = join("",&get_sub_list('MyPr::Valid::'.$param->(form)));
  
      foreash (@vm) {
       my $obj = 'MyPr::Valid::'.$param->(form)->new($param);
       $obj->$_();
     }

   }

    foreash (@m) {

        my $obj = 'MyPr::Form::'.$param->(form)->new();

        $obj->$_();

} else {


    if ($param->{global-bla}) {

    my @mb = join("",&get_sub_list('MyPr::Bla-bla::'.$param->(form)));

    foreash (@mb) {

        my $obj = 'MyPr::Bla-bla::'.$param->(form)->new();

        $obj->$_();

    }


}