ディベロッパー向けTechNote
P_BLOG モジュール構成について
P_BLOGの基本構成は以下のようになっています。各ディレクトリの定義は以下のようになっています。
admin- 管理モードで使われるファイルを納めるディレクトリです。
contents- メインのphpにより呼び出されるプレゼンテーション部、読み込み用コンテンツファイルを納めるディレクトリです。ファイルタイプは .inc.php、.inc、.txt、.html、.tplなどが推奨です。
resources- コンテンツファイルで使用されるリソースファイル、バイナリファイルを納めるディレクトリです。
images- モジュール全体で使用される画像ファイルを納めるディレクトリです。
include- インクルード(読み込み)ファイルを納めるディレクトリです。UDF (ユーザー定義関数。ファイルのPREFIXは「fnc_」を推奨)や定数ファイル(constants.php)などを納めるディレクトリです。
lang- ローカライズ可能な文字列変数を納めるディレクトリです。変数のグループは「$lang['...']」としています。
P_BLOG自体も基本的にこのモジュール構成の規則に則って構成するものとします。例外として、画像のパスなどをシンプルにするためアップロード用のディレクトリ「/resources/」のみ、トップレベルディレクトリに配置しています。
基本的に各ファイル、リソース、および関数は下位の階層へと継承され参照可能となるもの、とします。
「include」内の関数ファイル「fnc_*」ファイルについて
各関数は「/include」内の「fnc_*」で始まるファイルに記述しています。最も上位にある「/include」ディレクトリに納められている「fnc_base.inc.php」が、基盤となる関数定義ファイルで、全てのページで使用される、
- データベース接続処理
- XHTMLヘッダ部
- メニュー部
- フッタ部
はここに記述されています。
各子ディレクトリ(例:admin, analyze, files, forum など)にある「/include」ファイルは、それ以下のディレクトリでしか使われないファイルを納めています。「/images」も同様に、それ以下のディレクトリでしか使われない画像が納められています。
例
- 「
/include/fnc_base.inc.php」 -- 全てのページで使用される関数- 「
/admin/include/」 -- adminモードのみで使用される - 「
/analyze/include/」-- analyzeでのみ使用される - 「
/files/include/」-- filesでのみ使用される - 「
/forum/include/」-- forumでのみ使用される
- 「
- 「
/images/」 -- 全てのページで使用される画像- 「
/admin/images/」 -- adminモードのみで使用される - 「
/analyze/images/」-- analyzeでのみ使用される - 「
/forum/images/」-- forumでのみ使用される
- 「
プラグインモジュールについて
配置ディレクトリ
プラグインは以下の場所にインストールされるものとします。
「/include/user_include/plugins/」
ファイル名のスタイル
プラグイン名は必ず以下の規則性を持たせるものとします。
- 接頭辞(Prefix)は「
plg_」とします。 - 拡張子(Extention)は「
.inc.php」とします。 - ファイル名は常に小文字で、単語の区切りにはアンダースコアを用いて下さい。
特に 1. と 2. は重要で、この規則に従わない名前を用いたファイルはプラグインとして認識されません。
plg_foo_bar.inc.php
プラグインコードのスタイル
プラグインコードとは、プラグインが返す変数で、{}で括ってテンプレートに張りつけるコードを意味します。
- 変数名は「
$plugin['CREATER_CODE']['foo_bar']」とします。- 「
$plugin」はプラグインのグループ変数です。 ['CREATER_CODE']は常に大文字とアンダースコアで表し、略字可能です。- プラグイン名変数
['foo_bar']は常に小文字とアンダースコアで表記し、どのような機能を提供するプラグインか一目で分かり易いようにするためなるべく略字は避けて下さい。
- 「
- P_BLOG Project純正のクリエーターコードは「['PBPROJ']」です。これと重複しないクリエーターコードを使用してください。
{$plugin['PBPROJ']['calendar']}
プラグインの仕様
- コードは必ず
classを使ってパッケージ化してください。 - コーディングスタイルは「PEAR :: Manual :: 標準コーディング規約」に準拠してください。