はじめての rhaco3
Advent Calendar[23日]
先日rhaco3がリリースされたので、なんとかかんとか使えるようになってみたいと思います。
ちなみに、自分のPHPスキルを書いておくと
知識としてはパーフェクトPHPをぱらぱら見たりはしているけれど、実際手を動かしたことはないというレベル。
- 作者: 小川雄大,柄沢聡太郎,橋口誠
- 出版社/メーカー: 技術評論社
- 発売日: 2010/11/12
- メディア: 大型本
- 購入: 32人 クリック: 1,065回
- この商品を含むブログ (58件) を見る
なお、以下の環境で動作確認をしています。最初、PHPをMAMPで入れたものを使っていたのだけど、途中でエラーになったのでデフォルトで入っている方に切り替えた(詳しくは後述)。
rhaco3 を手に入れる
Page not found · GitHub Pages のダウンロードから取得するか、curl などで直接ファイルを取得しましょう。
なお、rhaco3 は PHP 5.3 からでないと使えません。
sugamasao@GRAM% curl -O http://rhaco.org/download/core/rhaco3.php (省略) sugamasao@GRAM% ll total 32 -rw-r--r-- 1 sugamasao staff 12576 12 24 00:20 rhaco3.php
これでセットアップは完了です。
パッケージのインポート
sugamasao@GRAM% php -d phar.readonly=0 rhaco3.php -import org.rhaco.Conf org.rhaco.Request org.rhaco.Paginator org.rhaco.Template org.rhaco.store.db.Dbc org.rhaco.store.db.Dao org.rhaco.store.db.Q org.rhaco.flow.module.HtmlFilter org.rhaco.flow.module.Paginator org.rhaco.store.db.module.Sqlite
上記のコマンドを一行で実行すると、各パッケージを取得してくるようだ。
実行すると、vendors ディレクトリが作られる。どうやら、importしたファイルはここに入るようだ。
sugamasao@GRAM% ll vendors/ total 232 drwxr-xr-x 3 sugamasao staff 102 12 24 00:35 _source -rw-r--r-- 1 sugamasao staff 446 12 24 00:36 org.rhaco.Conf.phar -rw-r--r-- 1 sugamasao staff 957 12 24 00:36 org.rhaco.Exceptions.phar -rw-r--r-- 1 sugamasao staff 2207 12 24 00:36 org.rhaco.Log.phar -rw-r--r-- 1 sugamasao staff 5834 12 24 00:36 org.rhaco.Object.phar -rw-r--r-- 1 sugamasao staff 3329 12 24 00:36 org.rhaco.Paginator.phar -rw-r--r-- 1 sugamasao staff 3457 12 24 00:36 org.rhaco.Request.phar -rw-r--r-- 1 sugamasao staff 11996 12 24 00:36 org.rhaco.Template.phar -rw-r--r-- 1 sugamasao staff 3949 12 24 00:36 org.rhaco.Xml.phar -rw-r--r-- 1 sugamasao staff 587 12 24 00:36 org.rhaco.flow.module.HtmlFilter.phar -rw-r--r-- 1 sugamasao staff 1156 12 24 00:36 org.rhaco.flow.module.Paginator.phar -rw-r--r-- 1 sugamasao staff 1132 12 24 00:36 org.rhaco.net.Query.phar -rw-r--r-- 1 sugamasao staff 538 12 24 00:36 org.rhaco.store.db.Column.phar -rw-r--r-- 1 sugamasao staff 12442 12 24 00:36 org.rhaco.store.db.Dao.phar -rw-r--r-- 1 sugamasao staff 740 12 24 00:36 org.rhaco.store.db.Daq.phar -rw-r--r-- 1 sugamasao staff 1727 12 24 00:36 org.rhaco.store.db.Dbc.phar -rw-r--r-- 1 sugamasao staff 2295 12 24 00:36 org.rhaco.store.db.Q.phar -rw-r--r-- 1 sugamasao staff 267 12 24 00:36 org.rhaco.store.db.exception.DaoException.phar -rw-r--r-- 1 sugamasao staff 359 12 24 00:36 org.rhaco.store.db.exception.LengthException.phar -rw-r--r-- 1 sugamasao staff 364 12 24 00:36 org.rhaco.store.db.exception.NotfoundException.phar -rw-r--r-- 1 sugamasao staff 365 12 24 00:36 org.rhaco.store.db.exception.RequiredException.phar -rw-r--r-- 1 sugamasao staff 359 12 24 00:36 org.rhaco.store.db.exception.UniqueException.phar -rw-r--r-- 1 sugamasao staff 3766 12 24 00:36 org.rhaco.store.db.module.Base.phar -rw-r--r-- 1 sugamasao staff 855 12 24 00:36 org.rhaco.store.db.module.Sqlite.phar
ここを見る限り、パッケージは phar 形式*2で提供されており、_source ディレクトリ内には展開された php ファイルなどが入っているようだ*3。
Sqlite3 でテーブルを作るスクリプト
vim create.php
内容はチュートリアルの「データベースの作成」をそのままコピペ。
そして、実行してみる。
sugamasao@GRAM% php create.php sugamasao@GRAM% ll total 48 -rw-r--r-- 1 sugamasao staff 3072 12 24 01:41 board -rw-r--r-- 1 sugamasao staff 259 12 24 01:06 create.php -rw-r--r-- 1 sugamasao staff 12576 12 24 01:41 rhaco3.php drwxr-xr-x 26 sugamasao staff 884 12 24 01:41 vendors
SQLiteのファイルが作成された。
なお、このエントリの最初で少し書いたけれど、MAMPのPHPを使っていたところ、以下のようなエラーが発生してうまく動かせなかった。最初はモジュールが足りないのかと思って Sqlite のモジュールを import してみたのだけど、それでも問題は解決せず、PHP自体を変えることで動作するようになった*4。
Fatal error: Uncaught exception 'ReflectionException' with message 'Class \org\rhaco\store\db\module\Sqlite does not exist' in phar:///Users/sugamasao/var/htdocs/rhaco_ac_23/vendors/org.rhaco.store.db.Dbc.phar/Dbc.php:50 Stack trace: #0 phar:///Users/sugamasao/var/htdocs/rhaco_ac_23/vendors/org.rhaco.store.db.Dbc.phar/Dbc.php(50): ReflectionClass->__construct('\org\rhaco\stor...') #1 phar:///Users/sugamasao/var/htdocs/rhaco_ac_23/vendors/org.rhaco.store.db.Dbc.phar/Dbc.php(40): org\rhaco\store\db\Dbc->connect() #2 [internal function]: org\rhaco\store\db\Dbc->__new__('{"type":"org.rh...') #3 phar:///Users/sugamasao/var/htdocs/rhaco_ac_23/vendors/org.rhaco.Object.phar/Object.php(66): call_user_func_array(Array, Array) #4 /Users/sugamasao/var/htdocs/rhaco_ac_23/create.php(5): org\rhaco\Object->__construct('{"type":"org.rh...') #5 {main} thrown in phar:///Users/sugamasao/var/htdocs/rhaco_ac_23/vendors/org.rhaco.store.db.Dbc.phar/Dbc.php on line 50
次回へ続く
MAMPの罠にはまって時間を食い過ぎたので、実際に Web で動かす、というのは次回やろうと思います。
追記
MAMPのPHPでも動くようになりました!
@sugamasao rhaco3.phpを修正しました、これでmampでもエラーでないんじゃないかな
2010-12-24 02:13:06 via web to @sugamasao
ありがとうございます!><