Chinaunix首页 | 论坛 | 博客
  • 博客访问: 387670
  • 博文数量: 69
  • 博客积分: 1984
  • 博客等级: 上尉
  • 技术积分: 953
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-28 00:43
个人简介

学无所长,一事无成

文章分类

全部博文(69)

文章存档

2015年(19)

2014年(14)

2013年(9)

2012年(17)

2010年(10)

我的朋友

分类: Python/Ruby

2010-08-17 15:12:00

Catalyst 学习 - Chapter 4
扩展一个应用
 
(2010-08-17 星期二)
 
一、配置文件
 
 
添加配置文件,便于最终用户使用,同时可以方便地调整参数。
配置文件位于 MyApp 根目录下,缺省名字为 MyApp.conf。这里我的配置文件是 Test/Test.conf。
 
1、你可以修改为 .yml 文件,就可以使用 yaml 格式,如果不喜欢,也可改为其他格式。
 
最简单的 yaml 格式是个键值对,如: foo: bar
使用方式: print "Foo is: ". $c->config->{foo};
 
 
较为复杂的,这里 foo 属于 Model MyDatabase:
 
Model::MyDatabase:
  foo: bar
 
使用方式(在 Model MyDatabase 内部访问):
$my_foo = $self->{foo};
 
建议创建一个 accessor,可以避免输入错误,导致程序中断,如下:
 

package MyApp::Model::MyDatabase;
use base 'Catalyst::Model';

## 以下这一句创建 accessor
__PACKAGE__->mk_ro_accessors('foo');
sub show_foo {
  my $self = shift;
  print "foo is equal to ". $self->foo;
}

 
2、直接设置变量,编辑主文件 Test/lib/Test.pm
 

package MyApp;
use Catalyst qw(...);
# ...
__PACKAGE__->config->{Model::MyDatabase} = { foo => 'bar' };
# ...
__PACKAGE__->setup;
1;


二、配置数据库连接。

编辑 Test/test.yml,写入如下信息:

Model::TestDB:
  connect_info:
    - DBI:SQLite:__HOME__/database


以上信息是使用的 sqlite 数据库,使用 mysql 如下修改:

Model::TestDB:
  connect_info:
    - DBI:mysql:address_database
    - username
    - password


三、使用  session

安装模块:
 
Catalyst::Plugin::Session
Catalyst::Plugin::Session::State::Cookie
Catalyst::Plugin::Session::Store::FastMmap
Catalyst::Plugin::Session::Store::File
 
Catalyst 的 session 由三部分组成(开启,存储,读取 session):
 
Catalyst::Plugin::Session -- 提供基本函数功能
Catalyst::Plugin::Session::State::Cookie -- 使用 cookie 存取数据
Catalyst::Plugin::Session::State::URI -- 通过 URI 传递参数,丑陋且不安全
Catalyst::Plugin::Session::Store::FastMmap -- 使用内存存取数据,windows 上不可用
Catalyst::Plugin::Session::Store::File -- windows 上可用
 
主文件 Test/lib/Test.pm 中进行如下修改:
 
use Catalyst qw/ConfigLoader Static::Simple
    Session Session::State::Cookie Session::Store::FastMmap/;
 
程序中多出以下 object 可用:$c->session 和 $c->flash.
阅读(854) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~