How to get Started: A Development Overview
提供: GeeklogJpWiki
PHPブロック関数・プラグインを開発する前に
原著者 Tom Willett
「2つの名前」
PHPブロック関数やプラグインの開発を始める際に、次の2つの名前を決断します。この名前は大変重要です。
1.PHPブロック関数名やプラグイン名
コードで参照されるPHPブロック関数名やプラグイン名を決めなければなりません。ブロックの場合,複数の関数で構成されていたりグローバルな設定変数を持っているのでなければそれほど重要ではありませんが、プラグインの場合は名前が重要です。その名前がプラグインのインストールディレクトリ名になり,プラグインAPIで使用されることになります。{plugin-name}の値はこの段階で決めた名前になります。
2.データベースのテーブル名
Geeklog本体のように,プラグインで使用するテーブル全てに接頭子をつけるのはよい習慣です。こうすることで,サイトの運営者は同じデータベースを使い,複数のサイトを稼働させることができます。グローバルな $_DB_table_prefix を使用して,あるいは名前の衝突を防ぐために独自の接頭子を付加してテーブル名を $_TABLES 配列に追加します。独自のテーブルを $_TABLES に追加するには,次のように function.inc の先頭で宣言します。
$_CT_table_prefix='ct_'; $_TABLES['mytable'] = $_CT_table_prefix . 'mytable'; $_TABLES['my2ndtable'] = $_CT_table_prefix . 'my2ndtable';
「プラグインに最低限要求されること」
ほんの2, 3個のファイルしかないプラグインを作成することも可能です。ユニバーサルプラグインキットに含まれているインストーラとサンプルの関数を使えば,それは極めてたやすいはずなので,プラグイン開発者が手始めに慣れるにはうってつけです。プラグインに最低限必要とされるものは,次の通りです。
- install.php - public_html/admin/plugins/myplugin/install.php から実行されます。ユニバーサルプラグインキットに含まれているインストーラを使用し,この開発者用ハンドブックに従えばよいでしょう。
- functions.inc - プラグインの機能を実現するコードが含まれます。有効にされているプラグインの functions.inc は,lib-common.php から自動的に読み込まれます。最低限定義する必要があるのは,アンインストール用の関数です。これはプラグインの install.php から呼び出され,定義されていることが前提となっています。プラグインを削除したい場合,プラグイン管理メニューからも呼ばれます。
- config.php - プラグインが使用するテーブルとグローバルにする必要のある設定用の変数が含まれます。このファイルがなくても構いません。
- プラグインの config.php に対するインクルードや参照は functions.inc からなされます。
- 英語の言語ファイル
「ユーザが定義可能な設定」
プラグインにユーザが定義可能な設定を行う機能がある場合,それらの値を保存するのにGeeklogのコアのテーブルを修正して使いたいとは思わないでしょう。それが最も簡単な方法に思えるかもしれませんが,絶対におすすめできません。たとえば,チャットブロック(Chatterblock)プラグインの 'cb_userprefs' のような,プラグイン固有のテーブルを追加したいと思うでしょう,プラグインのテーブルとGeeklog本体のテーブルを分離しておくことで,提供された既存のコードを破壊することなく,本体のテーブルを維持できます。
プラグインのユーザ設定を行うプログラムは,あるユーザ用のレコードが存在するかチェックし,なければ新規に作成しなければならないでしょう。プラグインの主要なコードで,現在のユーザが設定を記録しているかチェックし,なければ,サイトの規定値を使用するでしょう。サイトの規定値として,ユーザIDが0のレコードを作成してもよいでしょう。
Geeklog 1.4.0では,plugin_user_create_{plugin_name}, plugin_user_changed_{plugin_name},plugin_user_delete_{plugin_name}というAPIが実装されています。
「他のよい習慣」
- 極めてシンプルなプラグインは別にして,必ずヘルプファイルを同梱してください。サイト管理者が静的ページを作成し,その中にヘルプファイルへのリンクを記述できるよう,ファイルはHTMLにします。
- おおよそ25行以上になり,複数の関数が含まれるブロックの場合,lib-custom.php を読みやすくするため,直接 lib-custom.php に書き込むのではなく,インクルードするようにしてください。
- ブロックで使用されるインクルードファイルなどは public_html/{blockname} ディレクトリに置きます。
- Geeklogのグローバル変数や関数にアクセスする必要がある場合,プログラムの先頭部分でlib-common.phpをrequire_onceでインクルードします。$_CONFなどのグローバル変数にアクセスするときに必要となります。
- ファイルが<public_html>/<plugin_name>にあるとすると,たとえば,
require_once("../lib-common.php")とするのが標準的な方法です。