「WordPressで学ぶPHP(1)変数・制御構造編」が発売されました。
「WordPressで学ぶPHP」シリーズの第1巻で、WordPressを通してPHPを学んでいく本です。
この本では、PHPの基本となる変数と制御構造について解説します。
Kindle本で、定価500円です。
MT5のPHP APIを探る(その5)
「MT5のPHP APIを探る」の第5回をお送りします。
今回は、レコードを保存する方法を紹介します。
1.Saveメソッド
オブジェクトを新規作成して保存する場合は、「Save」というメソッドを使います。
オブジェクトを作成した後、各プロパティを設定した後、Saveメソッドを実行します。
ただ、保存できるとは言え、内部的に使われるフィールドにも値を設定しなければならないので、オブジェクトの構造をよく理解している必要があります。
たとえば、以下のようにブログ記事を作成して、保存したいとします。
項目 | 内容 |
---|---|
タイトル | テスト |
本文 | テストのブログ記事です |
ブログのID | 2 |
ユーザーのID | 1 |
公開状態 | 公開(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でオブジェクトを保存することは、あまりお勧めできません。