kentasaito/plugphp

CodeIgniterライクなPHPフレームワーク

v0.31 2014-03-09 05:23 UTC

README

PlugPHPは、CodeIgniterライクなPHPフレームワークです。
下記のリモートリポジトリを使用しています。
https://github.com/kentasaito/PlugPHP

作者

斎藤 健太 (Kenta Saito)
https://github.com/kentasaito

ライセンス

PlugPHPはパブリックドメインで配布します。
作者はソフトウェアに関してなんら責任を負いません。

但し同梱させていただいている下記のファイルは、それぞれ権利者のライセンスに従います。

  • direct/jquery/*
  • direct/twitter/bootstrap/*
  • actuate/*

動作環境

下記の動作環境を想定しています。

  • OS: Linux
  • HTTPサーバ: Apache2
  • RDBMS: MySQL5.5+
  • ストレージエンジン: InnoDB
  • PHP: PHP5.4+

インストール

composerのインストール

インストール先ディレクトリで以下のコマンドを実行。
composer.pharが生成されます。

$ curl -sS https://getcomposer.org/installer | php

composerでPlugPHP-CRUDをインストール

以下の内容でcomposer.jsonを作成。

{
    "require": {
        "kentasaito/plugphp-crud" : "dev-master"
    }
}

以下のコマンドを実行。
vendorディレクトリとcomposer.lockが生成されます。

$ php composer.phar install

インストールスクリプトを実行

以下のコマンドを実行。
application/, direct/, tmp/, .htaccess, index.phpが生成されます。

$ cd vendor/kentasaito/plugphp
$ sh install.sh

プラグイン

index.phpと.htaccessを除く全てのファイルはプラグインとして提供されます。

パッケージ

下記の構成でapplicationとsystemをパッケージと呼びます。
PlugPHP本体はplug()関数を含むindex.phpと.htaccessだけです。
基本機能を提供するsystemさえもプラグインです。

.htaccess
index.php
application/
system/

プラグインはパッケージ単位で提供され、下記を含めることができます。

ドキュメント
コアモジュール
設定ファイル
コントローラ
ライブラリ
ヘルパー
モデル
ビュー
直接参照ファイル

使用するパッケージと、その優先順序はindex.phpで指定します。

$packages = ['application', 'system'];

プラグ

plug()という関数でプラグインをプラグします。
「プラグする」とは「候補が存在すれば読み込む」ということです。
plug()には2次元配列で候補を指定します。

plug([['application', 'system'], ['instance.php']]);

このときplug()は再帰的に下記の候補を検索し、始めに存在した候補を返します。

/application/instance.php
/system/instance.php

もう少し複雑な例を挙げてみましょう。

plug([
    ['application', 'system'],
    ['views'],
    ['guest', ''],
    ['welcome', ''],
    ['index', ''],
    ['default.php'],
]);

各配列の要素数に注目してください。
2 * 1 * 2 * 2 * 2 * 1 = 16
16個の候補が検索されます。

/application/views/admin/welcome/index/default.php
/application/views/admin/welcome//default.php
/application/views/admin//index/default.php
/application/views/admin///default.php
/application/views//welcome/index/default.php
/application/views//welcome//default.php
/application/views///index/default.php
/application/views////default.php
/system/views/admin/welcome/index/default.php
/system/views/admin/welcome//default.php
/system/views/admin//index/default.php
/system/views/admin///default.php
/system/views//welcome/index/default.php
/system/views//welcome//default.php
/system/views///index/default.php
/system/views////default.php

オーバーライド

plug()により、容易にオーバーライドが可能になります。
例えばsystem/instance.php(これは最も根源的なコアモジュールですが)をオーバーライドしたければapplication/instance.phpを作成するだけです。
system/instance.phpを改変する必要も、削除する必要もありません。

パッケージがcomposerパッケージ、Gitワーキングツリー、SVNワーキングコピーなどであるとき、改変・削除の必要がないことは重要です。
パッケージ開発者はオーバーライドされることを前提に、仮の設定ファイル、ビューなどをパッケージに含めることができるでしょう。