【PHP】Yii Framework Part 2
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2012/08/13(月) 22:16:39.44ID:???公式
ttp://www.yiiframework.com/
チュートリアル
ttp://www.yiiframework.com/doc/guide/
公式フォーラム
ttp://www.yiiframework.com/forum/index.php?/forum/21-japanese/
0002nobodyさん
2012/08/13(月) 22:29:33.32ID:???イーと発音します。"Yes It Is!"の略で「速い?安全?使える?」と言った質問にそのように答えるらしいです。
つまり口からはいと垂れる前にイーと答えろ!わかったな!
・必要条件は?
PHP5.1以上。ちょっと古い鯖でもいけるね!DBはMysqlでもSqliteでも。APC推奨。
・Yiiは何に向いてるの?
軽量で洗練されたキャッシュ機構を持ってるらしいから高負荷のアプリ、例えばポータル・フォーレム・CMS・EC等に向いてるらしいよ。
・他のフレームワークに比べてどうなの?
機能が豊富。ドキュメントが充実してる。設計がイケてる。
Symfonyより楽。Cakeより軽い。CodeIgniterより高機能。バランス派。
0003nobodyさん
2012/08/13(月) 22:39:46.35ID:???ttp://www.yiiframework.com/doc/blog/1.1/ja
パフォーマンス比較
ttp://d.hatena.ne.jp/cakephper/20110802/1312275110
ブログ記事
ttp://www12.atpages.jp/~nekomike/blog/2011/12/03/%E5%88%9D%E3%81%AEphp%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AFyii%E3%81%A7%E8%A1%8C%E3%81%93%E3%81%86%EF%BC%811%E6%97%A5%E7%9B%AE/
ttp://d.hatena.ne.jp/tjtjtjofthedead/archive?word=*%5Byii%5D
ttp://d.hatena.ne.jp/tanakahisateru/20120105/1325759589
ttp://d.hatena.ne.jp/cake67/searchdiary?word=Yii
ttp://livejamdb.blogspot.jp/search/label/Yii%20Framework
0004nobodyさん
2012/08/13(月) 22:48:41.80ID:???http://www.slideshare.net/samdark/alexander-makarov-yii2-whats-new
・PHP5.3.8以上
・ネームスペース
・PSR-0準拠
そのうち出る
0005nobodyさん
2012/08/14(火) 09:08:40.96ID:???0006nobodyさん
2012/08/14(火) 10:03:24.53ID:???日本語の書籍は無い。
そのかわり公式の日本語ドキュメントはしっかししてる
0007nobodyさん
2012/08/14(火) 11:20:31.31ID:Gol/k/SD良さが伝われば絶対に流行ると思う
0008nobodyさん
2012/08/14(火) 14:49:32.06ID:???0009nobodyさん
2012/08/15(水) 15:05:50.95ID:???ttp://yiithemes.mehesz.net/themelist
こういうの見ると本当に海外にはユーザ結構いるんだなと思う
0010nobodyさん
2012/08/15(水) 19:00:34.55ID:???日本じゃ考えられん。
0011nobodyさん
2012/08/16(木) 21:59:35.96ID:enTIr59oreturn array(
'CAdvancedArBehavior' => array(
'class' => 'application.extensions.CAdvancedArBehavior'
),
'CTimestampBehavior' => array(
'class' => 'zii.behaviors.CTimestampBehavior',
'updateAttribute' => 'updated',
'createAttribute' => 'created',
)
);
}
これでsave()すると、createdはちゃんと時間入れてくれるのに、
updatedは入れてくれない
フィールド名は合ってる
0012nobodyさん
2012/08/16(木) 22:10:05.73ID:enTIr59o新規保存のときはupdatedに入れてくれないのね
DB側で DEFAULT 0 とかするしかないか
0013nobodyさん
2012/08/16(木) 23:21:27.84ID:???Yii2って互換性はどーなるの?
0014nobodyさん
2012/08/17(金) 01:04:22.21ID:ShnfvB2s挙動がおかしい気がするんだけどキャッシュって自動でされたりしないよね?
0016nobodyさん
2012/08/17(金) 02:26:21.88ID:???コントローラは知らんがモデルは設定によってはスキーマをキャッシュする。schemaCachingDurationとか設定されてない?
0018nobodyさん
2012/08/20(月) 20:49:22.71ID:???前スレ
【PHP】Yii Framework
http://kohada.2ch.net/test/read.cgi/php/1291909271/
0019nobodyさん
2012/08/20(月) 21:33:22.22ID:???てかその前の更新でDHTMLXとの統合って書いてあるっぽいけど組み込まれるの?
なんかExt4Yiiみたい
0020nobodyさん
2012/08/20(月) 21:44:40.49ID:xPw81cJW今開発してるサイト2にしたほうがいいのかな
完成度5割ぐらいだけど
0021nobodyさん
2012/08/20(月) 22:06:35.76ID:???0022nobodyさん
2012/08/20(月) 22:24:24.65ID:???0023nobodyさん
2012/08/22(水) 18:49:12.60ID:???http://yiijan.org/
0024nobodyさん
2012/08/23(木) 03:27:48.15ID:???なんだよこのXoopsみたいなデザインは
0025nobodyさん
2012/08/24(金) 13:44:17.79ID:???0026nobodyさん
2012/09/09(日) 23:52:20.59ID:???今後もCake並に普及したらいいと思う
反面結構使いやすくて効率良いから、
他の人に知られたくないみたいな気持ちも多少あったりする・・・俺だけだと思うけど
0028nobodyさん
2012/09/12(水) 21:21:21.36ID:???0029nobodyさん
2012/09/12(水) 21:31:02.16ID:???公式サイトがWeb黎明期みたいじゃ誰も使いませんよ
HPビルダー臭がしてもCMSそのまんま感がしても一緒
0030nobodyさん
2012/09/13(木) 06:05:24.32ID:???0031nobodyさん
2012/09/16(日) 16:40:17.42ID:???$product = new Product();
$product->price = 100;
$product->getTaxPrice();
public function getTaxPrice()
{
return $this->price * 1.05;
}
みたいな書き方はOKなんでしょうか。
それとも、getTaxPrice($price) と書くべきなんでしょうか。
上の書き方がOKの場合→開発者はどのプロパティに値をセットして良いのか分からない
getTaxPrice($price)の方が良い場合→モデルをsave()する際はプロパティに値をセットしてるのにこのときだけ引数で対応??
0032nobodyさん
2012/09/16(日) 17:02:22.91ID:???public function getTaxPrice($price=null)
{
return ($price===null) ? $this->price * 1.05 : $price * 1.05;
}
0033nobodyさん
2012/09/16(日) 17:36:27.27ID:???その辺はもう好みの問題じゃないかなあ。
個人的にはgetTaxPriceからpriceは想像できるからそんな不自然でもないと思う。
税込価格で扱っている方が手間がないからプロパティは$this->basePriceにしてpublic function getPrice()にするとか。
ちなみにYiiはget/setを省略してプロパティとして呼べるので
public function getTaxPrice()なら$product->taxPrice;でいい。
003431
2012/09/16(日) 18:08:35.70ID:???getTaxPrice()はシンプルな構成でしたが、ロジックによっては
複数のプロパティをセットしなければならない場合もありますよね。
そのとき、分かりにくいかなと思った次第です。
かといってメソッド引数に渡すのも微妙な感じです。
例えば user、user_profilesに同時にレコードを登録する場合、Userモデルのクラスに
public function save(User $user, UserProfile $profile)
{
$user->save();
$profile->save();
}
とは多分書きませんよね。普通は
public function save($profile)
{
$this->save();
$profile->save();
}
といった感じでしょうか。
あと両方に対応させるとなると、全てのビジネスロジックメソッドで同様の処理が必要となり、冗長かなぁと思いました。
0035nobodyさん
2012/09/16(日) 18:59:08.85ID:???return array('profiles'=>array(self::HAS_MANY, 'user_rofiles', 'user_id'));
}
リレーション作って
public function save()
{
$this->save();
$this->profiles->save();
}
じゃないかな。リレーション張れないようなものであれば多分一緒のモデルでSaveするべきじゃない
003631
2012/09/16(日) 19:14:46.03ID:???参考になりました。ありがとうございます
0037nobodyさん
2012/09/17(月) 00:14:07.71ID:???どのプロパティに値を追加すれば良いか判断がつかない気がする。
例えばUser、UserProfilesが必須で、条件によってUserActivitiesへのインサートが必要な場合とか。
0038nobodyさん
2012/09/17(月) 01:03:42.06ID:???引数に入れるのは依存するクラスが増えると無制限に引数増えるから個人的には避けたいかなあ
0039nobodyさん
2012/09/24(月) 18:26:45.04ID:???あらゆる場所にかかれてしまうんだけど、これはしょうがないのかな
まとめるとしたらどのファイルに記述したらいいんだろう
0040nobodyさん
2012/09/24(月) 22:41:49.60ID:???で、自動的に格納してくれるフィールドって、
DBにフィールドがある場合のみ?
リレーションで、categoriesなんてのがある場合も自動で入れてくれる?
Postモデルに2つのリレーション(どちらもMANY_MANY)を作っていているんだけど、
片方だけ入るのはどうして??
0041nobodyさん
2012/09/26(水) 06:42:13.13ID:???自己解決した。
http://www.yiiframework.com/doc/guide/1.1/ja/form.model#sec-4
必須項目でもなんでもなかったので、
バリデーションルールに属性が書かれていなかったので「安全」とされずに
一括代入で代入されていなかったようだ。
いや〜理解すればするほど、よくできてるなぁと思う。
0042nobodyさん
2012/10/11(木) 00:10:08.03ID:VQnyuLaIclass HogeController extends Controller
{
public function actionCreate($name)
{
$account=Account::model()->findByAttributes(array('name'=>$name));
/hoge/create/myname1234
みたいにURLから引数を受け取りたい場合って、
わざわざconfig/main.phpのurlManagerで設定しないとダメなの?
0043nobodyさん
2012/10/11(木) 12:32:02.39ID:???/hoge/create?name=myname1234&age=17が嫌で
/hoge/create/name/myname/1234/age/17みたいなURLパターンが使いたいなら
'<controller:\w+>/<action:\w+>/*'みたいに末尾を*にするとname/valueのパターンが繰り返される
0044nobodyさん
2012/10/12(金) 01:07:04.59ID:???ありがとうございます。
*を追加する方向でいきます。
あと、もう1つ別の質問があるのですが、
return array(
'condition'=>'t.status=:status',
'params'=>array(
':status'=>1,
),
);
scopes()や、Dbcriteriaなどで使う条件のparamsで、
上記のように数値でstatusを渡すと思い通りに帰ってこなく悩んだのですが、
':status'=>'1'
のようにしなくてはいけないのですね。
これは内部的には数値と文字列を別々にしているということだと思いますが、
MySQLの場合、どれが数値でどれが文字列として解釈されるのかというのを説明したページってありますか?
上記の場合はENUMでstatusを設定していました。
0045nobodyさん
2012/10/17(水) 06:49:49.66ID:m5Yd7B3u使おうという気にならない
どこで使えばいいか、どう便利なのか全然わからん
0046nobodyさん
2012/10/17(水) 14:22:38.22ID:???0047nobodyさん
2012/10/20(土) 22:15:32.88ID:???インドネシア 100
インド 79
ウクライナ 74
ロシア 60
ベトナム 44
ポーランド 14
中国 13
ブラジル 13
イタリア 10
スペイン 9
0048nobodyさん
2012/11/12(月) 03:09:18.01ID:???0049nobodyさん
2012/11/15(木) 23:05:45.85ID:???あとは独立しかない…
一応使ってる会社もあるらしいよ
ttps://speakerdeck.com/crifff/yii
0050nobodyさん
2012/11/17(土) 23:41:27.97ID:/APH/Q07・phpinfoのsessionの項目はローカルとサーバで同じ
・configの user['allowAutoLogin'] は true
・もちろんローカル、サーバ全く同じプログラム
LoginForm.phpのlogin()処理は
$duration=3600*24*30; // 30 days
Yii::app()->user->login($this->_identity,$duration);
みたいに30日間続くようにしている
ローカルではこのとおり動いていそうなんだけど、
サーバにあげるとすぐに切れる
ini_set()でsession.gc_maxlifetimeが1440に設定されているけど
変えないといけないのかな?
しかし、ローカルで1440秒以上続く理由がわからない・・・
0051nobodyさん
2012/11/18(日) 21:26:07.40ID:???なんだ???わけがわからん・・・
0052nobodyさん
2012/11/19(月) 00:55:58.76ID:???005350
2012/11/19(月) 17:26:03.61ID:???ありがとう!!!!!!!!
,. < ̄ ̄ ̄ ̄ ̄ > 、
/ ヽ _
〈彡 Y彡三ミ;,
{\ \|_ \>ー 、 ト三三ニ:}
人{ >、,___.>、/三 ヾ\ |わ三彡;!
/./ トミ;,_ Y/ \>ノー〜=- "
V / /!  ̄ ̄ ゝ | / _
し/'┴──----─''| ン}\-ヾ彡
ヾ、___ノー'''`
0056nobodyさん
2012/11/25(日) 01:11:05.53ID:5yYiKRS4純粋なOOPフレームワークであるYiiに乗り換えました。
宜しくお願い致します。
0057nobodyさん
2012/11/26(月) 11:54:34.26ID:???0059nobodyさん
2012/11/26(月) 17:04:48.92ID:???しっかりしろよ。
0060nobodyさん
2012/11/27(火) 00:22:11.39ID:???・フラグメントキャッシュ
・ページキャッシュ
お前らが一番使ってるキャッシュってどれ?
なんかデータキャッシュやらクエリキャッシュを見ても、
もうページキャッシュでいいじゃんって思ってしまうんだが
0061nobodyさん
2012/11/27(火) 00:39:56.90ID:???RailはDSLなのでRubyの方言と言って差し支えないレベルなのであながち間違ってないんじゃないでしょうか
>>60
俺はむしろページキャッシュ全然つかわないなあ、一部データキャッシュしてる程度
ブログとか投稿系メインならページキャッシュがいいんだろうけどそういうサイトでもないし
0062nobodyさん
2012/11/27(火) 21:17:50.55ID:???ヘッダにログインしてるかどうかみたいな表示があったらもう使えないからなぁ
フラグメントキャッシュは物珍しさに一回使ってみたけど、なんかお肌に合わなかった。
データ更新したときのためにDependency付けたりするとviewがまたごちゃごちゃしだすんだよな・・。
0064nobodyさん
2012/11/28(水) 09:30:12.29ID:???普通のデータキャッシュはよく使うよ。
findByPkの結果をキャッシュしたりするし、大したサイズが無いマスターテーブルなんかは期限1日で丸ごとキャッシュしてる。
■ このスレッドは過去ログ倉庫に格納されています