plugins:nucleus_sqlite:readmedev

SQLite 版 Nucleus (開発者の方へ)

Nucleusコアの変更に関して

  • すべてのMySQL呼び出し関数『mysql_XXXX()』は、『nucleus_mysql_XXXX()』に変更されています。プラグインのインストールの際も、同様の変更が自動的にNP_SQLiteによってなされます。新しいNucleusの公開があった場合は、『extra/sqlite/』フォルダにあるツールでこの変更を行うことができますので、『extra/sqlite/readme-ja.txt』をご覧ください。このツールで将来のすべてのバージョンに関して自動的な変更がエラー無く行えるかどうかは保証できませんが、現在の所 Nucleus ver3.22 と ver2.0 の両方で問題なく変更できることが確認されています。

プラグインの作成に関して

  • Nucleus-SQLite用にプラグインを作成する場合も、MySQL版を作成する場合と全く同じように行えます。別の言い方をすれば、Nucleus-MySQL用に作成したプラグインがそのままNucleus-SQLiteでも使えるということです。従って、プラグインの開発はMySQL版で行い、完成した物をNucleus-SQLiteで試すということをお勧めします。Nucleus-SQLiteでプラグインを作成した場合、それをMySQL版でも使用できるように公開する場合は、『nucleus_mysql_XXXX()』を『mysql_XXXX()』に変更することになるでしょう。もし、SQLiteに特異的なクエリーや関数を用いた場合は、そのプラグインはMySQL版では使用できません。
  • SQLクエリーで文字列を扱う時のエスケープの仕方も、MySQLの仕様に準じてください。つまり、『sqlite_escape_string()』は用いず、『addslashes()』もしくは、『mysql_escape_string()』(『nucleus_mysql_escape_string()』)を用いてエスケープしてください。もし『sqlite_escape_string()』を用いてプラグインを作成してしまった場合、SQLiteで使用している場合は問題ないのですが、そのプラグインをNucleus-MySQLに用いた場合にSQLインジェクションが可能になるケースが生じます。

MySQLとのコンパティビリティーに関して

  • MySQLに特異的なSQLクエリーのうちどれが使えるかは、『nucleus/sqlite/note.txt』に記述してあります。ここに含まれていないものに関しては、要望を出して頂ければ次期バージョンで対応することができるかも知れません。

SQLクエリ構文に関して

  • SQLiteでは、例えば『SELECT i.itime, ….』の様に記述した場合に『itime』が fetch されません。これは、『SELECT i.itime as itime, ….』の様に変更する必要があります。Nucleusコアでは、ver3.22に於いては少なくともBLOG.php, ITEM.php, COMMETS.phpでこのような記述があり、見つけた部分に関しては変更をしてあります。また、幾つかのプラグインで似たような記述があります。
  • こういったクエリー文に関しては、phpファイルを書き換えることが基本なのですが、SQLiteラッパーに自動的にこれを行わせることが可能です。これを行わせるには、『sqliteconfig.php』で、『$SQLITECONF['DEBUGMODE']=true;』としてください(デフォルトで、true です)。同時に、『$SQLITECONF['DEBUGREPORT']=true;』とすれば、表示したサイトのソースコードを見ることで、どこで変更を行ったかに関する情報が得られます。その情報に従ってプラグインのphpファイルを変更し、『sqliteconfig.php』の設定を元に戻すということもできます。この設定は、SQLiteラッパー0.85以降(Nucleus 3.3 で採用)では、『(PRAGMA short_column_names=1』の使用により必要が無くなりました。
 
plugins/nucleus_sqlite/readmedev.txt · 最終更新: 2011/03/23 21:28 (外部編集)