$Core::MT::CMS...がわからない

| | トラックバック(1)

カテゴリ:

MTのソースコードを読んでいて、

MT/App/CMS.plというファイルの中によくわからない記述がある。

sub core_methods {
    my $app = shift;
    my $pkg = '$Core::MT::CMS::';
    return {
        'tools'     => "${pkg}Tools::system_check",
        'dashboard' => "${pkg}Dashboard::dashboard",
        'menu'      => "${pkg}Dashboard::dashboard",
        'admin'     => "${pkg}Dashboard::dashboard",
....

「$pkg = '$Core::MT::CMS::'」と宣言されているから、
「${pkg}Dashboard::dashboard」というのは「$Core::MT::CMS::Dashboard::dashboard」
のことだと思う。

で、この「$Core」というのが何なのかわからない。

このソース内や継承している継承もとのパッケージのソースを調べたけれど、
この「$Core」が何か教えてくれるものはみつからなかった。

もしやこれはMT由来のものではなくてPerl由来の何かなのか?と思って、
ラクダ本で、COREについて調べると、357ページに次のような記述がある。

オリジナルの組み込み関数は、COREという疑似パッケージ経由でいつでもアクセスすることが可能である。だから、たとえchdirキーワードがオーバーライドされていても、常にCORE::chdirは、Perlに最初から組み込まれているバージョンのchdirを表すことになる。

ということで、全部大文字の「CORE」は組み込み関数をオーバーライドしたあとで、オーバーライドしていない状態の組み込み関数を呼び出すときに付けるものらしい。

うーん、でも「CORE」と「Core」では違うしなぁ。

「$Core::MT::CMS::Dashboard::dashboard」とやったときに、
名前空間はどうやって処理されているのだろうか?
どうみてもこれは「MT::CMS::Dashboard::dashboard」を呼んでいるが、
「Core」という名前空間が頭に付いているし、
調べた限りではその名前は宣言されていない。

MTのlibフォルダの中には「MT::Core」というファイルもあるが、
MTが頭についてちゃやっぱりだめなわけで・・・。

これを調べるの2回目なのだけど、結局わからず。

トラックバック(1)

このブログ記事を参照しているブログ一覧: $Core::MT::CMS...がわからない

このブログ記事に対するトラックバックURL: https://nozawashinichi.sakura.ne.jp/MT-4.25/mt-tb.cgi/479

「$pkg = '$Core::MT::CMS::'」と宣言されているから、 「... 続きを読む

comments powered by Disqus

このブログ記事について

このページは、Shinichi Nozawaが2009年6月17日 17:25に書いたブログ記事です。

ひとつ前のブログ記事は「CRONを設定」です。

次のブログ記事は「管理画面のメニューに追加する」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。