お知らせ

Excelでできるらくらく統計解析2010年4月7日

Excelでできるらくらく統計解析」が発売されました。
Excelを使って、ヒストグラム作成から推定・検定・多変量解析といった統計行う方法を解説しています。
多数の式を入力する必要がある処理は、「統計アドイン」で簡単に行えるようになっています。

他にも多数書籍を執筆しています。
こちらもぜひご覧ください。

MT5のPHP APIを探る(その5)

| コメント(3) | トラックバック(0)

「MT5のPHP APIを探る」の第5回をお送りします。
今回は、レコードを保存する方法を紹介します。

1.Saveメソッド

オブジェクトを新規作成して保存する場合は、「Save」というメソッドを使います。
オブジェクトを作成した後、各プロパティを設定した後、Saveメソッドを実行します。

ただ、保存できるとは言え、内部的に使われるフィールドにも値を設定しなければならないので、オブジェクトの構造をよく理解している必要があります。

たとえば、以下のようにブログ記事を作成して、保存したいとします。

項目内容
タイトルテスト
本文テストのブログ記事です
ブログのID2
ユーザーのID1
公開状態公開(2)
ベースネームtestentry
作成日時2010年1月19日0時0分0秒
公開日時2010年1月19日0時0分0秒
フォーマット改行を変換
トラックバックの許可許可する(1)
コメントの許可許可する(1)

実際にこの処理をプログラムにすると、以下のようになります。

<?php
set_include_path(get_include_path() . PATH_SEPARATOR . '/www/mt5/php');
require_once('mt.php');
$cfg_file = 'mt-config.cgi';
$mt = MT::get_instance(null, $cfg_file);

require_once('lib/class.mt_entry.php');
$entry = new Entry;
$entry->title = 'テスト';
$entry->text = 'テストのブログ記事です';
$entry->blog_id = 2;
$entry->author_id = 1;
$entry->status = 2;
$entry->basename = 'testentry';
$entry->created_on = '20100119000000';
$entry->authored_on = '20100119000000';
$entry->convert_breaks = '__default__';
$entry->allow_pings = 1;
$entry->allow_comments = 1;
$entry->class = 'entry';
$entry->ping_count = 0;
$entry->comment_count = 0;
$entry->week_number = '201002';
$entry->created_by = 1;
$entry->current_revision = 0;
$entry->Save();
?>

19行目までは、表にあげた各項目を、オブジェクトのプロパティに設定する処理です。
一方、20~25行目は、内部的に使われるプロパティを設定する処理です。

2.Updateメソッド

既存のオブジェクトを読み込んで、その内容を修正した後で保存しなおす場合は、「Update」というメソッドを使います。
たとえば、変数$entryが既存のブログ記事のオブジェクトを指している場合、「$entry->Update();」とすることで、そのブログ記事を保存しなおすことができます。

3.Perlのコールバックとの兼ね合い

PerlのAPIでは、オブジェクトの保存の前後にコールバックを設定して、それらのタイミングで処理を行うことができます。
MT本体も、ところどころでコールバックを利用しています。
また、プラグインの中にも、コールバックを利用しているものがあります。

しかし、PHPでオブジェクトを保存した場合、Perlのコールバックは呼び出されません。
そのため、MT本体や、Perlのプラグインの動作に、支障が出ることがあり得ます。
このことから考えると、PHPでオブジェクトを保存することは、あまりお勧めできません。

Facebook連携

当記事について「いいね」や「送信」を行っていただけると幸いです。


この記事についてウォールに投稿

トラックバック(0)

トラックバックURL: http://www.h-fj.com/mt/mt-tb.cgi/2007.

コメント(スレッド2件,コメント3件)

コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。

No.1 さむらい : カスタムフィールドの更新について

お世話になります。
PHPのAPIにていろいろ可能性が広がるので、
非常に重宝しつつ、サンプルなど作成させていただいてます。

CGIでは動作させることはできているのですが、
PHPにてカスタムフィールドを更新するサンプルが無く、
かなり立ち止まってしまいました・・

$entryに既に記事があり、

test_id(数値)
entry_field.test_text(テキスト)
のカスタムフィールドを更新したいと考えており、

$entry->{'entry_field.test_id'} = 0;
$entry->{'entry_field.test_text'} = $inputBody;
$entry->Update();

と単純に行いましたがうまく更新されませんでした・・・
お手数ですがもし可能でしたらご教授頂けますと幸いです。

No.2  : Re:カスタムフィールドの更新について

>さむらいさん
こんにちは。

カスタムフィールドの更新については、申し訳ありませんが、APIを調べきれていません。
ちなみに、シックスアパートの開発の方の話によると、保存機能はオマケ的なものだということでした。

No.3 さむらい : Re:カスタムフィールドの更新について

壱様

お世話になります。
ご回答頂きましてありがとうございました。

もう少しいろいろ試してみまして、
無理そうであれば深追いはしない方がよさそうな気が致しました(笑)

ありがとうございました。

コメントする


Facebookでコメント

試験的にFacebookのコメントフォームを設置しました。