活動再開
http://d.hatena.ne.jp/kunit/20071129
長い沈黙をやぶってMapleが再開.以前議論してた設定ファイル周りとかDB関連とか強化されるとうれしいなぁ.今はほんといろんなフレームワークが乱立状態だからチャンスとも言えるし,苦境とも言える.なんかこう決定打って出ないのかなぁ.選択肢が多すぎるのも考えものだ.
紅葉フレームワークを試してみる2
ちょっと見てみたらDIContainerの設定方法がいまいち分からなかったorz.この辺はMapleの肝だと思ってたので,もうちょっと試してみるとする.後やはり昨今のフレームワークでDB周りのフォローがないとけっこう厳しいのかなぁと思ったりも.比較的軽量な点は取っ付きやすくていいとも思うけど.まだαだし,今後に期待したいと思うます.
人間って勝手な生き物で他にあるものをすぐ欲しがっちゃうな.ないものねだりはよくないよね.
追記:
細かいことだけど,チュートリアルページWEBアプリ構築基礎の丸数字がorz
Macだと順に!,",#,$,%,&になっちゃうよ><
紅葉フレームワークを試してみる
まずはインストール.最近の自分はgeneratorなしではめんどくさくなってるので,一緒に入れることにする.
# pear channel-discover pear.momiji-project.org # pear install momiji/Momiji-alpha # pear install momiji/Momiji_Generator-alpha
最初インストールいしようとしたら怒られたので,
# pear upgrade PEAR # pear upgrade-channels
でPEAR本体をアップグレード.
んで適当にディレクトリを作る.今回はMomijiそのもののソースも見たかったので,
+ momiji + app | + momiji - ここにアプリケーションをつくる + libs - ここにMomijiのソースを入れる
とした.
次にSpycとSmartyを入れるみたいだけど,とりあえず今回はSmartyは使わない方向で.Spycを落としてきて,spyc.phpをcomponents配下に移動.これcomponentsに入れるのか….個人的にはlibとか作ってそこに入れたい気もするなぁ.
とまぁこれだけで準備が整ったのかな.早速momijiコマンドでactionを作ってみる.
$ momiji action Index Nov 24 23:15:59 [create] /www/projects/momiji/app/momiji/webapp/modules/Index/Index.php $ momiji entry index Index Nov 24 23:19:22 [create] /www/projects/momiji/app/momiji/htdocs/index.php
ここでふと思った.actionを作ったときにテンプレートは自動生成されないのか.チュートリアルではテンプレートまで生成されてるみたいだからSmartyを入れてれば作られるのかな?
ってことでwebapp作成時にSmartyオプションを入れてみる.
$ momiji webapp --smarty Nov 24 23:29:15 [create] /www/projects/momiji/app/momiji/htdocs Nov 24 23:29:15 [create] /www/projects/momiji/app/momiji/webapp Nov 24 23:29:15 [create] /www/projects/momiji/app/momiji/webapp/cache Nov 24 23:29:15 [create] /www/projects/momiji/app/momiji/webapp/components Nov 24 23:29:15 [create] /www/projects/momiji/app/momiji/webapp/configs Nov 24 23:29:15 [create] /www/projects/momiji/app/momiji/webapp/files Nov 24 23:29:15 [create] /www/projects/momiji/app/momiji/webapp/logs Nov 24 23:29:15 [create] /www/projects/momiji/app/momiji/webapp/modules Nov 24 23:29:15 [create] /www/projects/momiji/app/momiji/webapp/templates Nov 24 23:29:15 [create] /www/projects/momiji/app/momiji/webapp/configs/momiji.inc.php Nov 24 23:29:15 [create] /www/projects/momiji/app/momiji/webapp/templates_c Nov 24 23:29:15 [create] /www/projects/momiji/app/momiji/webapp/smarty Nov 24 23:29:15 [create] /www/projects/momiji/app/momiji/webapp/smarty/plugins Nov 24 23:29:15 [create] /www/projects/momiji/app/momiji/webapp/smarty/filters Nov 24 23:29:15 [create] /www/projects/momiji/app/momiji/webapp/smarty/plugins/modifier.escape_string.php Nov 24 23:29:15 [create] /www/projects/momiji/app/momiji/webapp/smarty/filters/smarty_window_outputfilter.php
ずらずらっと必要なファイルができる.
改めて
$ momiji action Index smarty Nov 24 23:33:12 [create] /www/projects/momiji/app/momiji/webapp/modules/Index/Index.php Nov 24 23:33:12 [create] /www/projects/momiji/app/momiji/webapp/modules/Index/momiji.yaml Nov 24 23:33:12 [create] /www/projects/momiji/app/momiji/webapp/templates/Index.html $ momiji entry index Index Nov 24 23:34:11 [create] /www/projects/momiji/app/momiji/htdocs/index.php
今度はテンプレートまでできてる.
http://localhost/momoji
とかで見てみると
Hello Momiji! Smarty Template
が表示された.
んーAction毎にディレクトリを作るというのがMapleのときにも感じた微妙な点ではあるから,この辺をなんとかできればなぁと思う.とはいえ設定ファイルの継承(上位階層の設定が下位階層にも反映される)っていう機能を考えたらしょうがないのかな.
後はRailsベースのCakeやらAkelosやら触った後の感想としては,LL言語で設定ファイルは非常にメンドクサイ.なんか最近はphpのことはphpでやっちょおうよ的な考えに染まっちゃってる自分がいる.
とりあえずここで力尽きるorz
AkActiveRecord::find
AkelosのActiveRecordのメモ.
find()
基本のfind.
第一パラメータに"first","all"などの取得条件を指定.第二パラメータには配列でオプションを指定する.オプションは以下の通り.
- conditions
- limit
- SQLのLIMIT区.何件分のデータを取得するかを指定.
- offset
- SQLのOFFSET区.取得するデータがどこから始まるかを指定
- order
- SQLのORDER区."id desc"みたいな.
- include
- アソシエーションを自動読み込み(後述)
ちなみに"find()"では単純にidを一つでも,複数並べた形でもデータの取得ができる.
$Model->find(1, 2, 3);
結果が複数ある場合には,モデルの配列で結果が返ってくる."first"を指定した場合には一番最初の結果のモデルが返ってくる.
findの"include"オプション
基本的にはアソシエーションを指定したモデルの名前を書く.例えばUserモデルとGroupモデルが繋がっている場合.Userは一つのGroupに属する,逆にグループには複数のUserが属するってなときは,
Userモデル
$belongs_to = 'group';
Groupモデル
$has_many = 'users';
な感じで結びつく.
このとき,とあるグループを取得するときについでに社員一覧とかを取るとすると
$group = $this->Group->find('first', array( 'conditions' => array('id = ?', 1), 'include' => 'users' ))
といった形で書ける.通常ならアソシエーションを読み込むときには"load"で読む必要があるけど,includeオプションをつけることで自動的に取ってきてくれる.
findAll()
"find('all')"のラッパー.内部的にもパラメータの一番最初に"all"指定を付け加えて,"find()"メソッドを実行.
findFirst()
"find('first')"のラッパー.内部的にもパラメータの一番最初に"first"指定を付け加えて,"find()"メソッドを実行.
findBy()
find()のconditionsオプションをいろいろ柔軟に指定できるよ.ってな感じっぽい.
コード中の例によると下記みたいな指定ができる.
findBy('username AND password', $username, $password);
findBy('age > ? AND name:contains', 18, 'Joe');
findBy('is_active = true AND session_id', session_id());
最初の引数に"all"か"first"をつける.付けない場合にはデフォルトで"all"が指定される.
これにfind()の時みたいにオプションを指定した場合には,引数の最後に配列で指定してあげる.
findAllBy(args)
findBy('all', args);
findBy
findFirstBy()
findBy('first', args);
findLastBy()
findFirstBy()の逆で最後のデータを取得.内部的に"findFirstBy()"を実行する前にorderに"desc"を指定している.
紅葉フレームワーク
http://www.momiji-project.org/
[via http://d.hatena.ne.jp/bobchin/20071120 ]
Mapleの思想を受け継いだフレームワークとして先日公開されたばっかりっぽい.個人的にはMapleのDIContainerは好きだったので(phpに合うかどうかは別として),今後もがんばって開発していただきたいなぁと思う.
id:bobchin:20071120さんのところでの
あと、Mapleはまだ死んでないかも?
徐々に動きがあるような感じですよ。。。
この発言が気になる今日この頃.
溶けゆく日本人
http://sankei.jp.msn.com/life/lifestyle/071113/sty0711130811000-n1.htm
すごいな…
急ぐなら電話しろよと思うけど…どうなんだろ.電話するまでもない用事なら5分程度でいらいらとかどんだけ.
確かに通勤時間なんかに道行く人を見ると自転車乗りながら,携帯いじってる人とかいるし.同僚と二人でご飯食べに行ってもずっと携帯とにらめっこ.隣の席の人とかも二人して携帯いじって会話なんてない人たちもいるし.
携帯なんて電話と簡単なメールができりゃいいんじゃねって思うのは少数派なのかね.