トップページphp
153コメント43KB

【PHP】Yii Framework Part 2

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2012/08/13(月) 22:16:39.44ID:???
前スレDat落ちでまさかの2スレ目。流行れ!


公式
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:???
・Yiiとはなんですか?
イーと発音します。"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:???
Yii2について

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:???
ttp://www.yiiframework.com/news/?tag=books

日本語の書籍は無い。
そのかわり公式の日本語ドキュメントはしっかししてる
0007nobodyさん2012/08/14(火) 11:20:31.31ID:Gol/k/SD
パート2になって更に人気出ると良いね
良さが伝われば絶対に流行ると思う
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:enTIr59o
public function behaviors(){
   return 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:???
1乙。でもフォーレムって何だw

Yii2って互換性はどーなるの?
0014nobodyさん2012/08/17(金) 01:04:22.21ID:ShnfvB2s
なんかモデルを更新したりコントローラを更新したりしても
挙動がおかしい気がするんだけどキャッシュって自動でされたりしないよね?
0015nobodyさん2012/08/17(金) 01:37:44.77ID:???
>>11

'setUpdateOnCreate' => true,

↑追加したらアップデート時もいれてくれる。
0016nobodyさん2012/08/17(金) 02:26:21.88ID:???
>>14
コントローラは知らんがモデルは設定によってはスキーマをキャッシュする。schemaCachingDurationとか設定されてない?
0017nobodyさん2012/08/17(金) 10:59:45.45ID:???
>>13
AR周りが大きく変わるしCFormModelもなくなるって言うから完全な互換は無理じゃないかなあ
0018nobodyさん2012/08/20(月) 20:49:22.71ID:???
1.1.12来てるね

前スレ
【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
Yii2っていつでるの?
今開発してるサイト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:???
あやまれ!Xoopsにあやまれ!
0026nobodyさん2012/09/09(日) 23:52:20.59ID:???
でもこういう日本語のサイトができるのは大きな一歩だよ
今後もCake並に普及したらいいと思う

反面結構使いやすくて効率良いから、
他の人に知られたくないみたいな気持ちも多少あったりする・・・俺だけだと思うけど
0027nobodyさん2012/09/11(火) 14:01:20.12ID:???
>>23
もうデザイン変更されててわろた

>>24-25でデザイン批判されたからか?w
0028nobodyさん2012/09/12(水) 21:21:21.36ID:???
やっぱ見た目って大事だよなw
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:???
Yiiはモデルにビジネスロジックを書きますが、例えば

$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:???
なんかJAVAっぽい
その辺はもう好みの問題じゃないかなあ。
個人的にはgetTaxPriceからpriceは想像できるからそんな不自然でもないと思う。
税込価格で扱っている方が手間がないからプロパティは$this->basePriceにしてpublic function getPrice()にするとか。

ちなみにYiiはget/setを省略してプロパティとして呼べるので
public function getTaxPrice()なら$product->taxPrice;でいい。
0034312012/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:???
public function relations(){
return array('profiles'=>array(self::HAS_MANY, 'user_rofiles', 'user_id'));
}

リレーション作って

public function save()
{
 $this->save();
 $this->profiles->save();
}

じゃないかな。リレーション張れないようなものであれば多分一緒のモデルでSaveするべきじゃない
0036312012/09/16(日) 19:14:46.03ID:???
お、それは良さそうですね。
参考になりました。ありがとうございます
0037nobodyさん2012/09/17(月) 00:14:07.71ID:???
save()に引数がないと、テーブルのリレーションを知らない開発者は
どのプロパティに値を追加すれば良いか判断がつかない気がする。
例えばUser、UserProfilesが必須で、条件によってUserActivitiesへのインサートが必要な場合とか。
0038nobodyさん2012/09/17(月) 01:03:42.06ID:???
複數のモデル絡んだ入力ならFormModelでまとめたらいいとは思う

引数に入れるのは依存するクラスが増えると無制限に引数増えるから個人的には避けたいかなあ
0039nobodyさん2012/09/24(月) 18:26:45.04ID:???
ユーザーIDを元にユーザーテーブルからユーザー情報ひっぱってくるっていう処理が
あらゆる場所にかかれてしまうんだけど、これはしょうがないのかな
まとめるとしたらどのファイルに記述したらいいんだろう
0040nobodyさん2012/09/24(月) 22:41:49.60ID:???
$post->attributes=$_POST['Post'];
で、自動的に格納してくれるフィールドって、
DBにフィールドがある場合のみ?
リレーションで、categoriesなんてのがある場合も自動で入れてくれる?

Postモデルに2つのリレーション(どちらもMANY_MANY)を作っていているんだけど、
片方だけ入るのはどうして??
■ このスレッドは過去ログ倉庫に格納されています