マイナーバージョンがあっぷしたよ☆
毎月29日のリリースを目標にゴニョゴニョしているRisolutoですが、今月も無事にリリースできました。今回のリリースは、「v2.1.0」ですよ!
マイナーバージョン(*1)がインクリメントされたということで、一部過去バージョンとの互換性がない部分があります。その代わりといってはなんですが、いろいろ機能追加をしました。このエントリでざっくりとご紹介しますです。
Bootstrapを採用したよ!
今までRisolutoではjQuery UIを使っていましたが、この度Bootstrapへ変更しました。これにより、「モバイルファースト」とか「レスポンシブデザイン」とか、そういったのが使いやすくなったんじゃないかなと思います。
デフォルトテーマの見た目的な意味で言えば、できるかぎり従来のものと変わらないようにしています。そんなに違和感ないかな。Bootstrapのコード自体はCDNを参照するようにしていて、Bootstrapの「Optional theme」なCSSは組み込んでません。
この変更に伴い、以前のバージョンで含まれていた「vendor_old」テーマは削除され、「vendor」テーマは置き換えられました。
Dbクラスを追加したよ!
以前のバージョンではDBに関するクラスが用意されていませんでした。まあ、PDOとか好きなものを自由に使えばいいぢゃないってことでさほどアレではなかったかと思いますが、今回のリリースにはRisolutoオリジナルのDbクラスが追加されました。
このDbクラス、内部的には単なるPDOのラッパーなので無理して使わなくてもいいです。ただ、MDB2とかRisoluto 1.x系に慣れている人とかだと使った方が便利かもなーって感じです。PDOをそのまま使うよりちょっとだけ楽になるはず。
これに伴い、テストコード(*2)が追加されたり、「RisolutoModelBase.php」がそれっぽくなったり、サンプルコード(*3)が同梱されるようになったりしています。DBの接続情報は「〜/risoluto/conf/risoluto_db.ini」に書きます。
ユーザアプリケーション向けのアレコレを置く場所ができたよ!
ユーザアプリケーションが使うクラスやインターフェース、トレイトなどの置き場がなかったのですが、今回のリリースで追加しました。「〜/risoluto/lib/vendor/RisolutoUserLibs」ってディレクトリがそれです。ネームスペースに「RisolutoUserLibs」を使えば、オートローダがこのディレクトリを参照します。
そのディレクトリ中にはサンプルのファイルがいくつか含まれているので、それを参考にしていただければ良いかと思います。呼び出し方なんかはサンプルコードを参照すればわかるかと。
Viewに関するコードの書き方が変わるよ!
ここも結構大きく変わったところです。トピック毎に分けて紹介しますね!
Viewに関するメソッドの場所
以前のバージョンでは「RisolutoRisolutoControllerBase」にまとめて定義されていましたが、今回から「RisolutoRisolutoViewTrait」というトレイトに定義されるようになりました。
Viewを使う場合は、ユーザアプリケーションのクラス内で「use RisolutoRisolutoViewTrait;」する必要があります。
View(テンプレート)の呼び出し
以前のバージョンでは
public function Play() { $smarty = $this->InitTemplate(); $this->DispTemplate($smarty, str_replace(array(__NAMESPACE__, ''), '', __CLASS__) . '.tpl'); }
みたいな書き方をする必要があり、少々面倒でした。今回のバージョンからは
public function Play() { $this->RisolutoView($assign_value); }
のように書くようになりました。なお、従来の「InitTemplate()/AssignTemplate()/DispTemplate()」も引き続き使えますが、非推奨という扱いになります。
デフォルトヘッダ情報の取得と編集方法
以前のバージョンでは
public function Play() { $header = $this->GetDefaultHeader(); $header['robots'] = 'NOINDEX,NOFOLLOW'; }
のようにする必要がありましたが、これからは
public function Play() { $header = $this->GetDefaultHeader(); $header = $this->ReplaceHeader($header, 'robots', 'NOINDEX,NOFOLLOW'); }
のように書くようになりました。これ以外にもデフォルトのヘッダ情報を定義/変更する手段がいくつか用意されています。詳細は「カスタマイズのためのヒント:RisolutoViewTrait」を参照してください。
URLの正規化をちょっとだけ楽に設定できるよ!
「wwwなし」のURLでアクセスされた場合に「wwwあり」のURLにリダイレクトさせたいというニーズは結構あるかと思います。
以前のバージョンではindex.phpの
// // OPTIONAL: URLの正規化 // if (isset($_SERVER['SERVER_NAME']) and !preg_match('/^www.*/i', $_SERVER['SERVER_NAME'])) { // header('Location: ' . ((isset($_SERVER['HTTPS']) and !empty($_SERVER['HTTPS'])) ? 'https' : 'http') // . '://www.' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'], true, 301); // exit; // }
という部分を編集する必要がありましたが、今回のバージョンから「〜/risoluto/URL_CANONICAL」というファイルを作成するだけで正規化されるようになりました。「www」でなく別なサブドメインにしたい場合は、当該ファイル内にそのサブドメイン名を記載すればOKです。
詳細は「Risolutoを設定する - URLの正規化」を参照してください。
呼び出されたくないアプリケーションを指定できるよ!
「〜/risoluto/apps/RisolutoApps」配下に配置したファイルは、適切な書き方さえしていれば呼び出すことができます。しかし、場合によっては特定ディレクトリ内のすべてまたは一部を呼び出せないようにしたい場合があります。
今まではパーミッションを落としたり削除するなどしないといけませんでしたが、今回のリリースから「RisolutoIgnore」というファイルを配置することでコントロールできるようになりました。
ディレクトリ内全体を呼び出せないようにするには空ファイルを置くだけでOK。一部だけを呼び出せないようにしたいなら「RisolutoIgnore」ファイルの中に1行1クラスとなるよう対象のクラスを列挙すればOKです。あくまでファイルを作成したディレクトリにしか効果を発揮しないので、サブディレクトリなどが存在する場合は必要なディレクトリすべてに個別配置する必要があります。
詳細は「Risolutoを設定する - RisolutoIgnore」を参照してください。
その他雑多な変更
いちいち取り上げるまでもない雑多な変更点を下記に列挙します〜。
- テストコードのディレクトリレイアウトが変更になりました
- PHPDocコメントのスタイルを一部修正しました
- 非推奨となっていた「RisolutoUtil」が削除されました
- ユーザアプリケーションが例外をThrowしたときError()がコールされますが、その後エラー情報をログ出力(*4)した後に「RisolutoAppsError」へリダイレクトされるようになりました
- 「RisolutoRisolutoErrorLogTrait」というエラーログ出力用メソッドを含むトレイトが追加されました
- 「RisolutoRisolutoControllerInterface」というインタフェースが追加されました(
- 「〜/risoluto/conf/risoluto.ini」の「[LIMIT] - max_loadavg」に「0」をセットすることで、サービスストップ機能を無効化することができるようになりました
- Faviconがリゾちゃんになりました
いろいろ変わって今までより良くなったよ!
というわけで、今回のRisolutoは今までとはだいぶ変わりました。今まで「面倒だな」とか「非効率だな」と思ってた部分をそれなりに整理できたと思うので、使いやすくなってるんじゃないかなと思います。
既存のコードがある場合は(*5)修正等が大変ですが(;´Д`)
不明な点があれば、Risolutoのドキュメントや同梱されているサンプルコードやテストコードを参照して貰えばだいたい分かるかと思います。場合によってはボクに聞いてくれれば可能な範囲でお答えします。
というわけで、Risolutoに興味をお持ちいただけたら是非ご利用ください!Risolutoの宣伝もしてくれたら嬉しいな!あと、Risolutoを一緒にやってくれるよって人がいたら是非お声がけください!PHPに関する開発以外にもいろいろやることがありますので!
*1:「vX.Y.Z」の「Y」の部分ね
*2:「〜/risoluto/lib/vendor_test/」の下にいろいろ入ってます
*3:「〜/risoluto/apps/RisolutoApps/Sample/」の下に入ってます
*4:「〜/risoluto/data/logs/」に出力されます
*5:ボク以外のユーザがどれだけいるのか知らんけど