Skip to content
oubakiou edited this page Aug 30, 2013 · 8 revisions

全般

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

DB

基本

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