最新型のWebフレームワークはどれもMVC形式に則った構造なので、旧世代からのレガシーなPHPスクリプトから載せ替えるにはかなりの労力が必要でした。
そこでブラウザから.phpにアクセスする形式を踏襲したまま、ModelやViewを使う事を目的とした付け焼き刃的フレームワークを作ってみました。
- ユーティリティ系
- リクエスト系
- モデル
- ビュー
- バリデーション
コンテナ内包のクラスを呼び出します。
$container = new Pimple\Container;
$container['db'] = function() {
return new PDO("sqlite::memory", null, null);
};
Simplicity\Application::registContainer($container);
$model = Simplicity\Loader::get('Simplicity\Model\Example');
名前 | 役割 | 備考 |
---|---|---|
static::$container | コンテナを格納 | - |
名前 | 役割 | 備考 |
---|---|---|
static::registContainer | コンテナを格納 | 引数にコンテナを格納する |
static::getInstance | コンテナを引数にしたインスタンスを取得 | 呼び出す場合には要コンストラクタ引数 |
GET,POST,FILE 辺りの処理を行っています。
GET,POSTのリクエストデータを取得できます。
$id = Simplicity\Library\Http\Request\Request::get("id", null);
名前 | 役割 | 備考 |
---|---|---|
static::get | GET,POSTから特定の値を取得する | キー名,デフォルト値を引数に入れる |
static::getAll | GET,POSTから値を全て取得する | デフォルト値(Array)を引数に入れる |
static::map | 全てのGET,POSTの値を再帰的に加工する | 引数に変数・ラムダ関数・クロージャーを入れる |
static::filter | 全てのGET,POSTの値を再帰的にフィルタリングする | 上に同じ |
リクエストメソッドを取得する
if(Simplicity\Library\Http\Request\Method::isAjax()) {
print "ajax!";
}
名前 | 役割 | 備考 |
---|---|---|
static::get | リクエストメソッドの取得 | - |
static::isAjax | Ajaxリクエストの判定 | bool値で返却 |
PDOクラスを内包したクラスです。
Simplicity\Model\Baseクラスを継承します。
$example = Application::getInstance('Simplicity\Model\Example');
$example->name = "Kohei Kinoshita";
$example->age = 30;
$example->save();
名前 | 役割 | 備考 |
---|---|---|
$pdo | PDOドライバクラス | Container['db']から取得 |
$obj | Array | setter,getterを通して値を格納・取得します |
$driver | ドライバ名 | mysqlやsqlite等、利用しているドライバを格納します |
$table | テーブル名 | PHPクラス名を小文字化したテーブル名が格納されます |
名前 | 役割 | 備考 |
---|---|---|
__construct | プロパティ初期化 | 引数にPimple\Containerを想定しています |
getbind | バインドパラメータ作成 | [[":{$key}": $value],]形式の配列を返します |
getNextID | テーブルの次IDを返却 | 次のインクリメント値を返します |
各種テンプレートエンジンに対応したビューを利用出来ます。
テンプレートエンジンの切り替えはコンテナ格納時に行います。
Simplicity\View\Base抽象クラスを継承します。
bootstrap.php
$container = new Pimple\Container;
$container['view.pc'] = function() use ($container) {
\Twig_Autoloader::register();
$loader = new Twig_Loader_Filesystem(APP_DIR.'.templates/pc/');
return new \Twig_Environment($loader);
};
$container['view.sp'] = function() use ($container) {
\Twig_Autoloader::register();
$loader = new Twig_Loader_Filesystem(APP_DIR.'.templates/sp/');
return new \Twig_Environment($loader);
};
index.php
$view = Simplicity\Application::getInstance("Simplicity\View\Twig");
$view->setEngine("view.pc");
$view->title = "インデックスページ";
$view->render(".index.html.twig");
名前 | 内容 | 備考 |
---|---|---|
$container | Container | Containerを格納 |
$obj | Array | setterを通してテンプレートエンジンにアサインする値を格納・取得します |
$engine | Closure | 利用するテンプレートエンジンを決定します |
名前 | 役割 | 備考 |
---|---|---|
__construct | プロパティ初期化 | 引数にPimple\Containerを想定しています |
setEngine | 利用するエンジンを決定します | Containerに格納した時のキー名を引数とします |
*render | レンダリングを実行します | 抽象メソッドになっています。ファイル名を引数にレンダリングまで実行。 |
フォームからの入力値や