MVC && ORM на perl

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

MVC && ORM на perl

Непрочитанное сообщение ProFTP » 2008-10-19 0:51:27

сабж

MVC (model view controller) http://search.cpan.org/~mramberg/Cataly ... atalyst.pm
ORM (object-relational mapper) объектный реляционный картопостроитель http://search.cpan.org/~akimov/ORM-0.85/lib/ORM.pod

не могу понять в каких случаях нужно испольовать ORM, и где реально оно надо, и зачем он, хотя там написано, но все равно не понятно это просто так чтоли, чтобы были объекты? я сам ООП редко когда использую свое... еще нашел Catalyst, он помощнее чем другие, хочу попробовать, это штука строит структуру сайта...
Последний раз редактировалось ProFTP 2009-01-18 21:31:56, всего редактировалось 1 раз.
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: MVC && ORM

Непрочитанное сообщение ProFTP » 2008-11-21 9:36:09

подскажите, реально ли спасате такая асбтрацкия для БД при больших запросов?

http://search.cpan.org/~ash/DBIx-Class-0.08010/
http://search.cpan.org/~ash/DBIx-Class- ... oining.pod

то есть если нужно вывести данные абслютно по разному, в принципе, одинаково... if elsif else

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

(я просто не могу понять все возможности этого, ORM, по этому спрашиваю... но рекомендуют именно это)

как это еще можно написать в асбстракции?

Код: Выделить всё

if ($s ==1) {push @clausers "User = $s";
if ($s ==2) {push @clausers "User = $s";}
if ($s) {push @clausers "User = $s";}
if ($s) {push @clausers "User = $s";}
if ($s) {push @clausers "User = $s";}
} esle {
if ($s) {push @clausers "User = $s";}
}
$clause = join (" AND ", @clauses );
$sth = $dbh->prepare(SELECT * FROM table WHERE $clause );

Код: Выделить всё

 my $cheapfredbooks = $schema->resultset('Author')->find({
   Name => 'Fred',
 })->books->search_related('prices', {
   Price => { '<=' => '5.00' },
 });
will produce a query something like:

Код: Выделить всё

 SELECT * FROM Author me
 LEFT JOIN Books books ON books.author = me.id
 LEFT JOIN Prices prices ON prices.book = books.id
 WHERE prices.Price <= 5.00
вроде бы одинаково?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: MVC && ORM

Непрочитанное сообщение hizel » 2008-11-21 9:48:27

вывод к Модели не относится, логику вывода решает Представление(View)

что касается ORM то ты получаешь универсальное обращение ко всем СУБД поддерживаемым данным ORM
и SQL пейсать нинада
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: MVC && ORM

Непрочитанное сообщение ProFTP » 2008-11-21 9:54:14

ну пыжык и mysql похожи сильно, там подправить не много надо, и сообще-то можно саму базу "перелить" рекурсивно, и есть еще полноценный модуль
http://dzhariy.habrahabr.ru/blog/42400/
который переводит с разных БД, SQlite,PostgreSQl,MySQl точно!

то есть, при построенни запросов, эффективность где-то 5% от этого и всё? :bn: :st:
hizel писал(а):вывод к Модели не относится, логику вывода решает Представление(View)
не понял, ты имеешь ввиду внедрить это в свой движок?

или что такое View, где оно?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: MVC && ORM

Непрочитанное сообщение ProFTP » 2009-01-17 8:15:23

подскжаите кто-то ли в Catalyst не использвать ORM, а DBI?

в документации везде идет про ORM, но мне он не нравится
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: MVC && ORM

Непрочитанное сообщение hizel » 2009-01-18 9:33:39

Catalyst как следует из документации может использовать всё что угодно
примеры там на ORM который сваяли сами Каталистовцы
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: MVC && ORM на perl

Непрочитанное сообщение ProFTP » 2009-01-18 21:33:35

нашел Catalyst::Model::DBI и Catalyst::Model::DBI::SQL::Library

но вообще-то такое ООП можно сделать самому классами, правда по поводу тестирование будет сложно протестировать правильность
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: MVC && ORM на perl

Непрочитанное сообщение ProFTP » 2009-01-31 13:26:09

аномалия какая-то

есть код, это файл login.pm

Код: Выделить всё

   sub index :Path :Args(0) {
    my ( $self, $c ) = @_;

        # Get the username and password from form
        my $username = $c->request->params->{username} || "";
        my $password = $c->request->params->{password} || "";
    
        # If the username and password values were found in form
        if ($username && $password) {
            # Attempt to log the user in
            if ($c->authenticate({ username => $username,
                                   password => $password  } )) {
                # If successful, then let them use the application
                $c->response->redirect($c->uri_for('/database'));
                return;
            } else {
                # Set an error message
               $c->stash->{template} = '/home/data/www/MyApp/root/login.tt';
                $c->stash->{error_msg} = "Bad username or password.";
            }
        }
   
        # If either of above don't work out, send to the login page
}
ошибка

Код: Выделить всё

Caught exception in MyApp::View::HTML::Template->process "HTML::Template->new() : Cannot open included file login :
 file not found. at /usr/local/lib/perl5/site_perl/5.8.8/HTML/Template.pm line 1658
    HTML::Template::_init_template('HTML::Template=HASH(0x9af7d10)') called at /usr/local/lib/perl5/site_perl/5.8.8/HTML/Template.pm line 1238
    HTML::Template::_init('HTML::Template=HASH(0x9af7d10)') called at /usr/local/lib/perl5/site_perl/5.8.8/HTML/Template.pm line 1124
    HTML::Template::new('HTML::Template', 'filename', 'login', 'path', 'ARRAY(0x9a9ed6c)', 'die_on_bad_params', 0, 'cache', 1, ...) 
called at /usr/local/lib/perl5/site_perl/5.8.8/Catalyst/View/HTML/Template.pm line 96
    Catalyst::View::HTML::Template::render('MyApp::View::HTML::Template=HASH(0x9799994)', 'MyApp=HASH(0x9b1e488)', 'login') called
 at /usr/local/lib/perl5/site_perl/5.8.8/Catalyst/View/HTML/Template.pm line 59

почему "login" из param идет в шаблон? шаблон ругается на то что откуда-то взляся login

шаблон работатет, тестовые страницы работают
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение