簡易PHPフレームワークの公開です。
CodeIgniterの設定をするのも大げさすぎるサイトを作ってたりするので
その時に使用している自作フレームワークを公開します。
大元は「CodeIgniter」でも本当に必要な機能を参考に作成しているものです。
とりあえず機能としては、
MVCの分離
DB接続(PDO)
くらいかも、
セキュリティも何も考慮にいれていないので
そのあたりは必要に応じて機能拡張で対応しています。
学習コストは、すこぶる低いです。
とりあえず「sample.php」を動作させた画面です。
こんな感じ、これを動作させる為のソースは
1.config.phpの修正
まず、config/config.phpを自分の環境に合わせて修正
<?php
// config設定
$config['db_name'] = 'dbname';
$config['db_host'] = 'localhost';
$config['db_user'] = 'dbuser';
$config['db_password'] = 'dbpassowrd';
$config['db_dns'] = "mysql:host={$config['db_host']}; dbname={$config['db_name']}";
$config['libDir'] = './libs/';
$config['viewDir'] = './views/';
core/gen.phpの9行目にあるconfig.php読み込み先の設定修正する
<?php
/**
* 共通処理
* 全てこのソースを一度requireしてから処理する
*/
ob_start();
// 読み込むconfigの設定を環境によって修正してください。
$config['configDir'] = './config/';
2.controllerの作成
とりあえず「core/gen.php」をrequireしてから全ては始まります。
<?php
require_once('core/gen.php');
// 表示データを格納
$data = array();
// 処理
$data['title'] = 'これはサンプルです';
$data['q1'] = $gen->http->getParam('q1', 'q1はありませんでした');
// ライブラリを読み込み
$gen->load('sample');
$data['sample'] = $gen->sample->get_sample();
// 表示するHTMLの呼び出し
$gen->view->load('sample', $data);
3.viewの作成
普通のphpです、$dataという変数に値が格納されて渡ってきます。
これは$gen->view->loadの呼び出し時の第2引数がそのまま渡されます。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<div>title:<?php echo $data['title'] ?></div>
<div>q1($_GET['q1']):<?php echo $data['q1'] ?></div>
<pre>sample:<?php var_dump($data['sample']); ?></pre>
<div>now:<?php echo nowstr(); ?></div>
<div><a href="./sample.php?q1=aaa">q1テスト(aaa)</a></div>
<div><a href="./sample.php">q1テスト(値なし)</a></div>
</body>
</html>
機能拡張
1.libsの作成
contollerでの「$gen->load(‘sample’)」のようにすることで、
$config[‘libDir’]に作成した同一名称のPHPをrequireして「ucfirst」の規約に則ったクラス名のクラスを自動生成します。
<?php
class Sample {
var $gen;
function __construct() {
$this->gen =& get_instance();
}
function get_sample() {
$sql = 'SELECT * FROM sample';
$stmt = $this->gen->pdo->prepare($sql);
$stmt->execute();
$ret = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $ret;
}
}
2.helperの作成
$config[‘libDir’]に作成した、helper.phpの中に記述されている関数はviewのどの場所からでも呼び出しが可能です。
views/sample.phpの9行目で使用例を記述しています。
<?php
function nowstr() {
$str_time = date('Y-m-d H:i:s');
return $str_time;
}
function isIphone() {
$gen =& get_instance();
return $gen->http->isIphone();
}
以上がフレームワークの機能です。
ソースコードはgithubで公開しています。
githubのリポジトリはこちらになります。
機能は本当にないので勝手に拡張して使って下さい。
ライセンスなどマズイ場合は連絡もらえたらと思います。