-
Notifications
You must be signed in to change notification settings - Fork 1
Home
PSR-2準拠のオートローダを採用しているため、 クラス名とクラスファイルの場所とが対応しています。
(例1)Controller_Index = Controller/Index.php
(例2)Model_Db_Blog = Model/Db/Blog.php
Oryzias\Controllerを継承してexecメソッドを実装する。 基本1コントローラ1アクションです。
ルーティング設定が別途されていなければ、 Controllerクラス名とURL構造が対応しています。
(例1)Controller_Admin_Blog_Delete = http://example.com/admin/blog/delete
(例2)Controller_Admin_Blog_Index = http://example.com/admin/blog/
また指定が無い場合はController名と対応したテンプレートファイルが設定されます
(例1)Controller_Admin_Blog_Index = Template/Default/Admin/Blog/Index.html
スマートフォン用テンプレートの使用、フィーチャーフォン用のテンプレートの使用が、 有効化されている場合はUAから判定して対応したテンプレートが使用されます。
(例1)SP用テンプレート使用有効 = Template/Sp/Admin/Blog/Index.html
コントローラ内で、
$this->g で $_GET
$this->p で $_POST
$this->r で $_REQUEST
$this->f で $_FILES
$this->c で $_COOKIE
$this->s で $_SESSION
にアクセス可能。
$this->Db_Blog で Model/Db/Blog $this->Vld_Hoge で Model/Validator/Hoge
のインスタンスにアクセス可能。まだインスタンスが無ければ生成されます。 なお複数(例えばMasterとSlave)のDBに接続する場合は
$this->Db_Master_Blog で Model/Db/Master/Blog $this->Db_Slave_Blog で Model/Db/Slave/Blog
$this->assign($key, $valu) で $this->template->assign($key, $value)
$this->config('hoge.fuga.piyo')
で設定ファイル内の該当項目を取得
- $httpOnly trueにする事でそのページはHTTPのみ受け付けます。HTTPSでアクセスしたらHTTPへリダイレクトされます。デフォルトnull
- $httpsOnly trueにする事でそのページはHTTPSのみ受け付けます。HTTPでアクセスしたらHTTPSへリダイレクトされます。デフォルトnull
- $xFrameOptions デフォルトDENY。そのページはiFrame内で表示する事が出来ません。
- r($url, $replace = true, $httpResponseCode=302) リダイレクト
- isSmartPhone() UAがスマートフォンならtrue
- isFeaturePhone() UAがフィーチャーフォンならtrue
https://github.com/oubakiou/oryzias/blob/master/Controller.php
Oryzias\Dbを継承してテーブル単位でDBクラスを作る。 インスタンス生成時にDB接続が行われる。 既に接続している場合はその接続が引き続き使用される。
'db'=>[ 'default'=>[ 'dsn'=>[ 'type'=>'mysql', 'host'=>'localhost', 'dbname'=>'oryzias_blog', 'charset'=>'utf8', ], 'user'=>'demo', 'password'=>'demo', ], ],
複数のDBへの接続を扱う場合は、
'db'=>[ 'master'=>[ //DB1の設定 ], 'slave'=>[ //DB2の設定 ], ],
- fetchAllWithPaginator($sql, $inputParameters=[], $perPage = 10, $currentPage=1, $pageWidth=3) ページネーション付で取得
- fetchAll($sql, $inputParameters=[]) 全行取得
- fetchRow($sql, $inputParameters=[]) 1行取得
- fetchOne($sql, $inputParameters=[]) 1行目の1列目取得
- execute($sql, $inputParameters=[]) SQLの直接実行
- insert($data) カラム名をキーとした配列でINSERT。createdAtというカラムがあったら自動で日時生成
- getByKey($keyValue, $keyName='id') 指定したキーでWHEREして1行取得
- getAllByKey($keyValue, $keyName='id', $orderCol=null, $orderSeq='DESC') 指定したキーでWHEREして全行取得
- getColByKey($keyValue, $keyName='id', $selectCol='name') 指定したキーでWHEREして指定した列を1行取得
- getAllColByKey($keyValue, $keyName='id', $selectCol='name', $orderCol=null, $orderSeq='DESC') 指定したキーでWHEREして指定した列を全行取得
- replaceByKey($data, $keyName = 'id') 指定したキーを基準に、既存レコードがあればUPDATE無ければINSERT
- deleteByKey($keyValue, $keyName='id') 指定したキーでレコード削除
- updateByKey($keyValue, $data, $keyName='id') 指定したキーでUPDATE
- buildSelect($cond) 指定した条件でSQL文字列を生成
- getByHogeでHogeカラムをキーに1レコード取得
- getAllByHogeOrderByFugaDescでHogeカラムをキーにFugaで降順ソートして全行取得
- getAllByHogeOrderByFugaDescでHogeカラムをキーにFugaで昇順ソートして全行取得
- getAllByHogeでHogeカラムをキーに対象の全行取得
- getAllHogeByFugaOrderByPiyoDescでFugaカラムをキーPiyoで降順ソートされたHogeカラムの値を取得
- getAllHogeByFugaOrderByPiyoDescでFugaカラムをキーPiyoで昇順ソートされたHogeカラムの値を取得
- getAllHogeByFugaでFugaカラムをキーにHogeカラムの値を取得
- getHogeByFugaでFugaカラムをキーにHogeカラムの値を取得
- updateByHogeでHogeカラムをキーに1レコード更新
- deleteByHogeでHogeカラムをキーに1レコード削除
- replaceByHogeでHogeカラムをキーに1レコードリプレース
https://github.com/oubakiou/oryzias/blob/master/Db.php
基本的には生PHP。
コントローラ内から$this->template->assign($key, $value)で変数をアサイン。 デフォルトでhtmlエスケープされる。
htmlエスケープをかけたくない場合は$this->template->unEscapedAssign($key, $value)で変数をアサイン。
{[$hoge]} でassignされた$hogeのechoが行われる
{[include(Include/Header)]} で別テンプレートの読込。
'template'=>[ 'enabledGzip' => true, 'outputCharset' => 'UTF-8', 'templateCharset' => 'UTF-8', 'templateDir' => $baseDir . '/php_include/Template/Default', 'templateCacheDir' => $baseDir . '/Var/Cache/Template/Default', 'templateCacheDisable'=> true, ], 'templateFp'=>false, 'templateSp'=>false,
enabledGzipがtrueならgzip出力。 outputCharsetに指定した文字コードで出力。 templateCacheDisableがfalseならテンプレートキャッシュが有効。
templateFp(フィーチャーフォン)、templateSp(スマートフォン)にも同様の設定が可能。 templateFpの設定が存在する場合はTemplate/Fp/配下のテンプレートが使用される。 templateSpの設定が存在する場合はTemplate/Sp/配下のテンプレートが使用される。
- h($str) htmlエスケープ
- truncate($str, $limit, $suffix='..') 指定長で文字列切り詰め
- dateFormat($str, $format='Y-m-d') 日付書式変換
- autoLink($str, $target='') URLっぽいものをリンクに変換
- url($params, $path=null) URL生成
<span class="published">{[ $this->dateFormat($article['createdAt'], 'Y年m月d日'); ]}</span>
https://github.com/oubakiou/oryzias/blob/master/Template.php
https://github.com/oubakiou/oryzias/blob/master/TemplatePlugin.php
https://github.com/oubakiou/oryzias/blob/master/Validator.php
https://github.com/oubakiou/oryzias/blob/master/Util.php https://github.com/oubakiou/oryzias/blob/master/UtilFunctions.php