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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ООП модули в Perl, что лучше? 
:(
    Опции темы
Logo
Дата 18.2.2010, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Кто какие модули для генерации классов в Perl использует? Ищу подходящий модуль.

З. Ы. прикрутил бы голосовалку, да боюсь не учесть всех модулей, а отредактировать голосование нельзя.
PM MAIL   Вверх
mvsgt
Дата 18.2.2010, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



хотя бы список модулей для генерации классов привели
PM MAIL   Вверх
Logo
Дата 18.2.2010, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

Moose
MooseX::Declare
Class::Prototyped
Class::Struct

и д.р.

Это сообщение отредактировал(а) Logo - 18.2.2010, 16:51
PM MAIL   Вверх
mvsgt
Дата 19.2.2010, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Moose, конечно. MooseX:smile использовать практически невозможно, остальные на фоне Moose не смотрятся.


PM MAIL   Вверх
Logo
Дата 19.2.2010, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Moose вроде бы не поддерживает закрытые методы.

Это сообщение отредактировал(а) Logo - 19.2.2010, 12:43
PM MAIL   Вверх
mvsgt
Дата 19.2.2010, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Я не знаю что такое закрытые методы (private, public ?), но кроме Moose просто нет вариантов. Он стал стандартом для многих крупных проектовтипа Catalist, DBIx::Class , так что пользоваться им можно. В MooseX методы есть - MooseX::MethodPrivate например, но пользоваться можно ли не факт, я нарывался на проблемы с отладчиками и даже с тривиальными редакторами в части подсветки и автоформатирования.

И ещё один сюрприз - если навороты над Moose делать будут потери в производительности. Обёртки, например, в 5 раз могут замедлить выполнение функции.

Это сообщение отредактировал(а) mvsgt - 19.2.2010, 13:54
PM MAIL   Вверх
Logo
Дата 20.2.2010, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

Я не знаю что такое закрытые методы (private, public ?),


Да, private, protected...
PM MAIL   Вверх
gcc
Дата 20.2.2010, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

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



Logo

если вы пишете веб-прогармму, то может быть лучше catalyst использовать, но только в него входит очень много модулей (возможно лишних), там есть похожие фремворки на catalyst, которые по легче чем он:

1) mojo 
2) Mypole 
3) и другие

Это сообщение отредактировал(а) gcc - 20.2.2010, 12:55
PM WWW ICQ Skype GTalk Jabber   Вверх
Logo
Дата 20.2.2010, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В катализе вроде бы тот же Moose используется... Вообще сабж о способах создания классов.
PM MAIL   Вверх
gcc
Дата 20.2.2010, 19:55 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

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



Logo

в каталисте есть контроллеры, в которых есть атрибуты методов для "диспатча"...

там есть различные атрибуты приват, локал, глобал и т.д. уже готовые...

в моделях (обычных классах) можно писать по своему как угодно, возможно там нужно атрибуты использовать если модели пересекаються друг с другом вызываються, НО как правило эти модели вызываються в котроллерах... (просто инициализируються там) 

вообще moose/mouse*X не обязательно там использовать... (просто если мы должны наследоватся от какого-то куска кода в каталисте написаном на moose, то по-моиму нужно использовать только moose... как правило наследоватся от какого-то куска кода не требуется, так как движок (каталист) уже написан...)

приватные методы можно почеркивать, так обозначать как приватные

Код

sub _method {

}




Это сообщение отредактировал(а) gcc - 27.2.2010, 01:29
PM WWW ICQ Skype GTalk Jabber   Вверх
gcc
Дата 5.3.2010, 07:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

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



Logo

нашел во фреймворке интересный вариант движка Catalyst::DispatchType::Chained

распределенное ООП какое-то своеобразное...

записать так:
Код

  sub blog : Chained PathPart('blog') CaptureArgs(0) { }


  sub user : Chained('blog') PathPart('user') CaptureArgs(1) {
      my ( $self, $c, $id_un ) = @_;
      $c->stash->{ message } = "Hello 2";
      $c->stash->{ arg_sum }->[0] = $id_un;
  }




  sub view : Chained('user') PathPart('view') CaptureArgs(1) {
      my ( $self, $c, $id ) = @_;
      $c->stash->{ message } .= "World!";
      $c->stash->{ arg_sum }->[1] = $id;

  }







  sub view_page_off : Chained('view')  PathPart('') Args(1) {
      my ( $self, $c, $page ) = @_;
      
      $c->stash->{ arg_sum }->[2] = $page;
      
   $c->forward( 'view_blog_message', [ @{$c->stash->{ arg_sum }} ] );
    
  }
  


  

  sub view_off : Chained('view') PathPart('') Args(0) {
      my ( $self, $c ) = @_;

   $c->forward( 'view_blog_message', [ @{$c->stash->{ arg_sum }} ] );
   
  }



  sub view_page_user : Chained('user') PathPart('') Args(1) {
      my ( $self, $c, $page ) = @_;

      $c->stash->{ arg_sum }->[1] = $page;
      
# print '99';
   $c->forward( 'view_blog', [ @{$c->stash->{ arg_sum }} ] );
   
  }
  


  sub view_user : Chained('user') PathPart('') Args(0) {
      my ( $self, $c ) = @_;

   $c->forward( 'view_blog', [ @{$c->stash->{ arg_sum }} ] );
   
   
  }
  




и методы будут вызыватся так, друг за другом, как роли... красиво получается

Код
| Path Spec                           | Private                              |
+-------------------------------------+--------------------------------------+
| /blog/user/*/view/*                 | /blog/blog (0)                       |
|                                     | -> /blog/user (1)                    |
|                                     | -> /blog/view (1)                    |
|                                     | => /blog/view_off                    |
| /blog/user/*/view/*/*               | /blog/blog (0)                       |
|                                     | -> /blog/user (1)                    |
|                                     | -> /blog/view (1)                    |
|                                     | => /blog/view_page_off               |
| /blog/user/*/*                      | /blog/blog (0)                       |
|                                     | -> /blog/user (1)                    |
|                                     | => /blog/view_page_user              |
| /blog/user/*                        | /blog/blog (0)                       |
|                                     | -> /blog/user (1)                    |
|                                     | => /blog/view_user                   |
'-------------------------------------+--------------------------------------'




в других языках, ни в java, ни в php такого не видел...

Это сообщение отредактировал(а) gcc - 5.3.2010, 07:32
PM WWW ICQ Skype GTalk Jabber   Вверх
mvsgt
Дата 5.3.2010, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



такое есть не только в перле, например jQuery так построен и так можно, в принципе, любой фреймворк организовать, но не всегда это хорошо - игры с Moose могут закончиться проблемпми с отладкой и производительностью. С отладкой - так как код, который реально выполняется, не имеет ничего общего с тем, что можно увидеть в отладчике (это не фильтры), а на организацию украшений уходит куча ресурсов.
PM MAIL   Вверх
gcc
Дата 8.3.2010, 09:19 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

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



наверное, т.е. кроме как в mod_perl?

а в cgi оно сильно медленно будет? но не обезательно же все сразу модули mooseX* запускать... ?

вот есть какие-то демоны можно писать http://search.cpan.org/~perigrin/MooseX-Da...eX/Daemonize.pm
в ООП как видно удобно

но такого как moose в других языках мало где есть (именно такие БОЛЬШИЕ возможности), т.е. исходя их этого обезательности использования moose в обычных скриптах (или не больших программах) не вижу...
а в catalyst в моделях его можно... 


Это сообщение отредактировал(а) gcc - 8.3.2010, 11:46
PM WWW ICQ Skype GTalk Jabber   Вверх
Vaneska
Дата 8.3.2010, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 15.3.2005
Где: Москва

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



Альтернатива Moose - Mouse.
По сути тот же Moose только заново написанный и не все из нативного муза работает.
Но производительность на порядок лучше
--------------------
http://isokolov.blogspot.com/
PM MAIL ICQ   Вверх
Logo
Дата 9.3.2010, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

но такого как moose в других языках мало где есть (именно такие БОЛЬШИЕ возможности), т.е. исходя их этого обезательности использования moose в обычных скриптах (или не больших программах) не вижу...
а в catalyst в моделях его можно... 


Даже через чур большие... а элементарного - закрытых методов - нет.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


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

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


 




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


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

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