文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Catalyst 学习 - Chapter 4

Catalyst 学习 - Chapter 4

时间:2010-08-17  来源:horsley

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. 运作原理类似于 $c->stash,并可在多次 request 间传递数据。   $c->session_expires 用于设定 session 超期期限 $c->flash 在跳转后再读取,就会失效。   使用 session 的简单方式,编辑 Test/lib/Test.pm ,添加如下: __PACKAGE__->config(session => {flash_to_stash => 1});     调整我们的应用,修改 controller person 的 action delete: 注:唯一变化就是将 stash 修改为 flash  

if($person){
  $c->flash->{message} = 'Deleted ' . $person->name;
  $person->delete;
}
else {
  $c->flash->{error} = "No person $id";
}
$c->response->redirect($c->uri_for('list'));
$c->detach();

 

四、添加身份验证

分两步进行:

1、通过插件 Authentication 实现身份识别 2、根据用户身份进行访问授权   安装插件:Catalyst::Plugin::Authentication     以下实现一个最简单的身份验证程序:

use Catalyst qw/
  Authentication
  Authentication::Store::Minimal
  Authentication::Credential::Password
  # (use the same session settings as before)
  Session Sesion::Store::... Session::State::...
  /;
  
__PACKAGE__->config->{authentication}{users} = {
    username => {
        password => "password",
        roles => [qw/may_view may_edit/],
    }
};


相关阅读 更多 +
排行榜 更多 +
翌日波奇狗的历险记手机版下载

翌日波奇狗的历险记手机版下载

休闲益智 下载
怪兽远征安卓版下载

怪兽远征安卓版下载

角色扮演 下载
谷歌卫星地图免费版下载

谷歌卫星地图免费版下载

生活实用 下载