Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> Programming —> MVC Catalyst

Catalyst - The Elegant MVC Web Application Framework

Автор: ProFTP.


email: q7u5@ukr.net

в разработке http://forum.lissyara.su/viewtopic.php?f=14&t=16847&p=193943#p193943

Краткий обзор

См. Catalyst::Manual для общего распространения документаций и руководства.

    # Установите Catalyst::Devel для расширеной работы 
    # и другие средства разработки 
    # Использовать помощника для создания новых приложений:
    catalyst.pl MyApp

    # Добавление моделей, представлений, контроллеров
    script/myapp_create.pl model MyDatabase DBIC::Schema 
         create=static dbi:SQLite:/path/to/db
    script/myapp_create.pl view MyTemplate TT
    script/myapp_create.pl controller Search

    # тестовый запуст -- используйте -r, чтобы перезагрузить автоматически, 
    # если изменились файлы на диске
    # -- help, чтобы увидеть все возможные варианты 
    script/myapp_server.pl

    # командная строка для тестирование интерфейса
    script/myapp_test.pl /yada

    ### in lib/MyApp.pm
    use Catalyst qw/-Debug/; # здесь также можно включить плагины

    ### In lib/MyApp/Controller/Root.pm (autocreated)
    sub foo : Global { # called for /foo, /foo/1, /foo/1/2, etc.
        my ( $self, $c, @args ) = @_; # args are qw/1 2/ for /foo/1/2
        $c->stash->{template} = 'foo.tt'; # определить шаблон
        # посмотреть кое-что из БД -- 
        # stash элементы (в виду хэша) передаются TT
        $c->stash->{data} =
          $c->model('Database::Foo')->search( { country => $args[0] } );
        if ( $c->req->params->{bar} ) { # access GET or POST parameters
            $c->forward( 'bar' );
            # процесс другой деятельности (условно говоря наследование)
            # можно делать что-то еще после возвращения
        }
    }
    # В foo.tt TT шаблон, можно использовать данные из базы данных
    [% WHILE (item = data.next) %]
        [% item.foo %]
    [% END %]

    # called for /bar/of/soap, /bar/of/soap/10, etc.
    sub bar : Path('/bar/of/soap') { ... }

    # все действия, сверху-вниз в контроллере
    sub auto : Private {
        my ( $self, $c ) = @_;
        if ( !$c->user_exists ) { # Catalyst::Plugin::Authentication
            $c->res->redirect( '/login' ); # require login
            return 0; # отменить запрос и перейти сразу к end()
        }
        return 1; # Успех; перевести к следующему действий
    }

    # вызвал все действия после завершения
    sub end : Private {
        my ( $self, $c ) = @_;
        if ( scalar @{ $c->error } ) { ... } # обрабатывать ошибки
        return if $c->res->body; # уже есть ответ
        $c->forward( 'MyApp::View::TT' ); # перейти к шаблону
    }

    ### in MyApp/Controller/Foo.pm
    # called for /foo/bar
    sub bar : Local { ... }

    # called for /blargle
    sub blargle : Global { ... }

    # индекс действий /foo, but not /foo/1, etc.
    sub index : Private { ... }

    ### in MyApp/Controller/Foo/Bar.pm
    # called for /foo/bar/baz
    sub baz : Local { ... }

    # первый автоматически вызывается Root, затем Foo, потом это:
    sub auto : Private { ... }

    # мощный механизм регулярных выражений путей, можно определить 
    # в атрибуте метода
    sub details : Regex('^product/(\w+)/details$') {
        my ( $self, $c ) = @_;
        # extract the (\w+) from the URI
        my $product = $c->req->captures->[0];
    }

См. Catalyst::Manual::Intro Для получения дополнительной информации.

ОПИСАНИЕ

Catalyst это современный фреймворк для создания веб приложений без боли обычно связаной с этим процессом. Этот документ является ссылкой на главное применение Catalyst'a. Если Вы являетесь новым пользователем, мы рекомендуем вам начать с Catalyst::Manual::Tutorial или Catalyst::Manual::Intro.

См. Catalyst::Manual подробную документацию.

Catalyst'a плагины могут быть загружены, назвав их в качестве аргументов для "use Catalyst". Пропустить Catalyst::Plugin:: префикс плагина с именем, т.е. Catalyst::Plugin::My::Module становится My::Module.

    use Catalyst qw/My::Module/;

Если Ваш плагин начинается с названия, помимо Catalyst::Plugin:: Вы можете получить полное имя, используя унарные плюс:

    use Catalyst qw/
        My::Module
        +Fully::Qualified::Plugin::Name
    /;

   
Специальные флаги же -Debug и -Engine также может быть указан в качестве аргумента, когда Catalyst загружен:

    use Catalyst qw/-Debug My::Module/;

   
Позиция плагинов и флаги в цепи имеет важное значение, так как они загружаются в том порядке, в котором они появляются.

Поддерживаются следующие флаги:

-Debug

Включает отладочный вывод. Вы также можете использовать параметр в окружающей среде CATALYST_DEBUG или <MYAPP> _DEBUG. В окружающей среде переопределяют настройки приложения с <MYAPP> _DEBUG имеющих наивысший приоритет.

-Engine
   
Принудительно Catalyst может использовать конкретного двигателя. Без Catalyst::Engine:: префикса двигателя нужно ввести название, а именно:

    use Catalyst qw/-Engine=CGI/;

-Home

Принудительно Catalyst использует определенную домашнюю директорию, например:

    use Catalyst qw[-Home=/usr/mst];

   
Это также может быть сделано в основе путем установления либо CATALYST_HOME переменной окружения или MYAPP_HOME, где MyApp заменяется на заглавное имя вашего приложения, любой "::" его имя будет заменено подчеркивания, например, если MyApp::Web, то следует использовать MYAPP_WEB_HOME. Если обе переменные установленные, то будет использоваться MYAPP_HOME.

-Log

    use Catalyst '-Log=warn,fatal,error';

Определяет-запятыми список журнала уровней.

-Stats

Включает сбор статистики и отчетности. Вы также можете этот параметр использовать с окружающей средой CATALYST_STATS или <MYAPP> _STATS. В окружающей среде настройки приложения с <MYAPP> _STATS имеют наивысший приоритет.

так же:

   use Catalyst qw/-Stats=1/

METHODS ^
INFORMATION ABOUT THE CURRENT REQUEST



www.x0.org.ua



размещено: 2009-08-11,
последнее обновление: 2010-05-15,
автор: ProFTP


Voronok, 2009-11-23 в 11:26:28

Интересная штука. А можно побольше и поподробнее про этот фрэймворк?

ProFTP, 2009-11-26 в 11:41:21

> Voronok
1) посмотри тут ОПИСАНИЕ в этой статье
там ссылки же есть...

2) посмотри тему на форуме http://forum.lissyara.su/viewtopic.php?f=14&t=16847&p=210582#p210582 , там другую часть документации переводят

ProFTP, 2009-11-26 в 11:49:14

> Voronok
и тут еще есть http://forum.lissyara.su/viewforum.php?f=17



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0408 секунд
Из них PHP: 30%; SQL: 70%; Число SQL-запросов: 77 шт.
Исходный размер: 24126; Сжатая: 6794