Home > Logs > May 2008 > This Entry
MT::Folder クラスのオブジェクトの正しい?作り方
これは、おそらくおおよその人には関係がありません。なぜなら、基本的にはこのアプローチをする必要がないからです。MT::Category オブジェクトを新規に作成し、class を folder にして保存すれば、Movable Type はそのレコードから構成される MT::Category オブジェクトを folder として扱うからです。基本的にはそれで十分だと思います。
ただし、MT::Category オブジェクトを新規に作成し、basename を指定せずに保存した場合、Movable Type は basename に cat15 (数字は既存のもののうち一番大きいもの + 1)のような値を勝手に入れます。これは、フォルダの場合 folder15 であるべきです。よって、この点にこだわる必要がある人のみ、この記事は役に立つ可能性があります。
MT::Folder クラスのオブジェクトの生成
my $cat = MT::Folder->new; では $cat には何も代入されません。以下のようにします。
my $app = MT->instance;
my $pkg = $app->model('folder');
$cat = $pkg->new;
これで、$cat に MT::Folder クラスのオブジェクトが入ります。この方法で生成し、basename を指定せずに保存すると、Movable Type は basename に folder15 を入れてくれます。
この方法は、(あまり使う機会はないと思いますが)他のクラスでも使えます。たとえば、MT::Blog クラスのオブジェクトを作成したい場合は、上記ソースコード二行目の最後の 'folder' を、'blog' に変更するだけです。実際に、内部的にもこの方法を使ってクラスオブジェクトを作成している箇所があります。
でも
やっぱりあんまり使う機会はないと思います。まあ、みんなが困っているときに一人だけやり方を知っていたりすると何やらカッコイイ気分を味わえるかもしれないので、覚えておくとよいかもしれませんが、でもやっぱり、その機会は滅多に訪れないと思います。
Post Comment