元スレ【PHP】Yii Framework Part 2
php覧 / PC版 /みんなの評価 :
1 = :
前スレDat落ちでまさかの2スレ目。流行れ!
公式
http://www.yiiframework.com/
チュートリアル
http://www.yiiframework.com/doc/guide/
公式フォーラム
http://www.yiiframework.com/forum/index.php?/forum/21-japanese/
2 = :
・Yiiとはなんですか?
イーと発音します。"Yes It Is!"の略で「速い?安全?使える?」と言った質問にそのように答えるらしいです。
つまり口からはいと垂れる前にイーと答えろ!わかったな!
・必要条件は?
PHP5.1以上。ちょっと古い鯖でもいけるね!DBはMysqlでもSqliteでも。APC推奨。
・Yiiは何に向いてるの?
軽量で洗練されたキャッシュ機構を持ってるらしいから高負荷のアプリ、例えばポータル・フォーレム・CMS・EC等に向いてるらしいよ。
・他のフレームワークに比べてどうなの?
機能が豊富。ドキュメントが充実してる。設計がイケてる。
Symfonyより楽。Cakeより軽い。CodeIgniterより高機能。バランス派。
5 = :
このフレームワークは書籍でてる?
6 = :
http://www.yiiframework.com/news/?tag=books
日本語の書籍は無い。
そのかわり公式の日本語ドキュメントはしっかししてる
7 :
パート2になって更に人気出ると良いね
良さが伝われば絶対に流行ると思う
8 = :
後発なだけあって完成度が高い
9 = :
テーマ集めたサイトがあったので
http://yiithemes.mehesz.net/themelist
こういうの見ると本当に海外にはユーザ結構いるんだなと思う
10 = :
すげーな。
日本じゃ考えられん。
13 = :
1乙。でもフォーレムって何だw
Yii2って互換性はどーなるの?
14 :
なんかモデルを更新したりコントローラを更新したりしても
挙動がおかしい気がするんだけどキャッシュって自動でされたりしないよね?
16 = :
>>14
コントローラは知らんがモデルは設定によってはスキーマをキャッシュする。schemaCachingDurationとか設定されてない?
17 = :
>>13
AR周りが大きく変わるしCFormModelもなくなるって言うから完全な互換は無理じゃないかなあ
20 :
Yii2っていつでるの?
今開発してるサイト2にしたほうがいいのかな
完成度5割ぐらいだけど
21 = :
年内に出るといいな
22 = :
年内にベータくらいはでてほしいね。
23 = :
日本ユーザグループリニューアルしたよ
http://yiijan.org/
24 = :
公式サイトみたいにスッキリさせろよ
なんだよこのXoopsみたいなデザインは
25 = :
あやまれ!Xoopsにあやまれ!
26 = :
でもこういう日本語のサイトができるのは大きな一歩だよ
今後もCake並に普及したらいいと思う
反面結構使いやすくて効率良いから、
他の人に知られたくないみたいな気持ちも多少あったりする・・・俺だけだと思うけど
27 = :
>>23
もうデザイン変更されててわろた
>>24-25でデザイン批判されたからか?w
28 = :
やっぱ見た目って大事だよなw
29 = :
いくら素晴らしいものでも
公式サイトがWeb黎明期みたいじゃ誰も使いませんよ
HPビルダー臭がしてもCMSそのまんま感がしても一緒
30 = :
今のデザインはいいの?
31 = :
Yiiはモデルにビジネスロジックを書きますが、例えば
$product = new Product();
$product->price = 100;
$product->getTaxPrice();
public function getTaxPrice()
{
return $this->price * 1.05;
}
みたいな書き方はOKなんでしょうか。
それとも、getTaxPrice($price) と書くべきなんでしょうか。
上の書き方がOKの場合→開発者はどのプロパティに値をセットして良いのか分からない
getTaxPrice($price)の方が良い場合→モデルをsave()する際はプロパティに値をセットしてるのにこのときだけ引数で対応??
32 = :
両方に対応させたらいいんじゃね?
public function getTaxPrice($price=null)
{
return ($price===null) ? $this->price * 1.05 : $price * 1.05;
}
33 = :
なんかJAVAっぽい
その辺はもう好みの問題じゃないかなあ。
個人的にはgetTaxPriceからpriceは想像できるからそんな不自然でもないと思う。
税込価格で扱っている方が手間がないからプロパティは$this->basePriceにしてpublic function getPrice()にするとか。
ちなみにYiiはget/setを省略してプロパティとして呼べるので
public function getTaxPrice()なら$product->taxPrice;でいい。
34 = :
なるほどー。
getTaxPrice()はシンプルな構成でしたが、ロジックによっては
複数のプロパティをセットしなければならない場合もありますよね。
そのとき、分かりにくいかなと思った次第です。
かといってメソッド引数に渡すのも微妙な感じです。
例えば user、user_profilesに同時にレコードを登録する場合、Userモデルのクラスに
public function save(User $user, UserProfile $profile)
{
$user->save();
$profile->save();
}
とは多分書きませんよね。普通は
public function save($profile)
{
$this->save();
$profile->save();
}
といった感じでしょうか。
あと両方に対応させるとなると、全てのビジネスロジックメソッドで同様の処理が必要となり、冗長かなぁと思いました。
35 = :
public function relations(){
return array('profiles'=>array(self::HAS_MANY, 'user_rofiles', 'user_id'));
}
リレーション作って
public function save()
{
$this->save();
$this->profiles->save();
}
じゃないかな。リレーション張れないようなものであれば多分一緒のモデルでSaveするべきじゃない
36 = :
お、それは良さそうですね。
参考になりました。ありがとうございます
37 = :
save()に引数がないと、テーブルのリレーションを知らない開発者は
どのプロパティに値を追加すれば良いか判断がつかない気がする。
例えばUser、UserProfilesが必須で、条件によってUserActivitiesへのインサートが必要な場合とか。
38 = :
複數のモデル絡んだ入力ならFormModelでまとめたらいいとは思う
引数に入れるのは依存するクラスが増えると無制限に引数増えるから個人的には避けたいかなあ
39 = :
ユーザーIDを元にユーザーテーブルからユーザー情報ひっぱってくるっていう処理が
あらゆる場所にかかれてしまうんだけど、これはしょうがないのかな
まとめるとしたらどのファイルに記述したらいいんだろう
40 = :
$post->attributes=$_POST['Post'];
で、自動的に格納してくれるフィールドって、
DBにフィールドがある場合のみ?
リレーションで、categoriesなんてのがある場合も自動で入れてくれる?
Postモデルに2つのリレーション(どちらもMANY_MANY)を作っていているんだけど、
片方だけ入るのはどうして??
41 = :
>>40
自己解決した。
http://www.yiiframework.com/doc/guide/1.1/ja/form.model#sec-4
必須項目でもなんでもなかったので、
バリデーションルールに属性が書かれていなかったので「安全」とされずに
一括代入で代入されていなかったようだ。
いや~理解すればするほど、よくできてるなぁと思う。
43 = :
要点を得てないかもしれないが
/hoge/create?name=myname1234&age=17が嫌で
/hoge/create/name/myname/1234/age/17みたいなURLパターンが使いたいなら
'<controller:\w+>/<action:\w+>/*'みたいに末尾を*にするとname/valueのパターンが繰り返される
44 = :
>>43
ありがとうございます。
*を追加する方向でいきます。
あと、もう1つ別の質問があるのですが、
return array(
'condition'=>'t.status=:status',
'params'=>array(
':status'=>1,
),
);
scopes()や、Dbcriteriaなどで使う条件のparamsで、
上記のように数値でstatusを渡すと思い通りに帰ってこなく悩んだのですが、
':status'=>'1'
のようにしなくてはいけないのですね。
これは内部的には数値と文字列を別々にしているということだと思いますが、
MySQLの場合、どれが数値でどれが文字列として解釈されるのかというのを説明したページってありますか?
上記の場合はENUMでstatusを設定していました。
46 = :
管理画面がサッと作れて便利ちゃう?
49 = :
受託で小さめの案件なら勢いだけで採用してもいいんだけどねえ。
あとは独立しかない…
一応使ってる会社もあるらしいよ
http://speakerdeck.com/crifff/yii
みんなの評価 :
類似してるかもしれないスレッド
- 【PHP】Yii Framework (981) - [72%] - 2012/8/12 2:46
- 【PHP】PEAR Part3 (703) - [37%] - 2022/10/30 21:15 ☆
- 【PHP】気軽にPHP質問スレ (1001) - [22%] - 2013/2/7 9:31
トップメニューへ / →のくす牧場書庫について