Class:DBI::AutoLoaderの使い方

Class:DBI::AutoLoaderの使い方

 mixiで「Class::DBI::AutoLoaderの使い方がわかんない」と書いてる人がいたけれど、何が分からないんだろう。

 サンプルに書かれているとおり、

  use Class::DBI::AutoLoader (
        dsn       => 'dbi:mysql:database',
        username  => 'username',
        password  => 'passw0rd',
        options   => { RaiseError => 1 },
        tables    => ['favorite_films','directors']
        namespace => 'Films'
  );

とすれば、Class::DBIを継承したFilms::FavoriteFilmsとFilms::Directorsが作られるって話でしょ。具体的には

package Films::FavoriteFilms;
use base 'Class::DBI::mysql';
__PACKAGE__->set_db(Main => $dsn, $username, $password, $options);
__PACKAGE__->set_up_table('favorite_films');
1;
__END__

みたいなことを自動でやってくれるんでしょう*1

 tablesを指定しなければ、そのデータベースにある全部のテーブルで上記のようなことをするので楽チンだけど、その分オーバーヘッドが大きくなるとか、まあ細かい注意点はあるかもしれませんが。

 標準のメソッド以外を使うことも出来るけど*2、そんなことするならAutoLoaderを使う意味はないか……。

*1:ソース読んでないけど。

*2:packageで追加すればいいだけなので。