【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日で丸ごとキャッシュしてる。
0065nobodyさん
2012/11/28(水) 15:42:51.29ID:???都道府県テーブルとかキャッシュしたいんだがどこでどのタイミングでキャッシュ&破棄したらいいのかわからない
Yiiの話か微妙だけど・・・
0066nobodyさん
2012/11/28(水) 16:12:01.38ID:???0067nobodyさん
2012/11/28(水) 16:14:53.22ID:???そのたびにDBにアクセスしてひっぱってくるのは負荷が高い気がするので
リレーションで他のテーブルと結合したりもするのですが
とにかく使用度が高い
0068nobodyさん
2012/11/28(水) 16:39:23.80ID:???DBから呼び出しでるって時点で設計が間違ってるのでは?
DBで管理するにしても、変更時に静的ファイル生成しちゃったほうが早いだろ。
0069nobodyさん
2012/11/28(水) 17:55:34.60ID:???都道府県でリレーション組んでるので結局ActiveRecordに変えた
SNSのようなものを作っていて、
都道府県別のユーザー数を統計クエリで集計できるのでARだとすごい便利
class Prefecture extends CActiveRecord
{
public function relations()
{
return array(
'users'=>array(self::HAS_MANY, 'User', 'prefecture_id'),
'userCount' => array(self::STAT, 'User', 'prefecture_id'),
);
}
}
↑こういうのはやっぱりテーブルで持たないと不便(無理?)ですよね?
0070nobodyさん
2012/11/29(木) 01:06:36.05ID:???が指し示す都道府県名を利用するのって、県名を表示する時だけでしょ。
それ以外は数字のみで管理・照合してるんだから、都道府県のテーブルなんていらないんじゃね?
0071nobodyさん
2012/11/29(木) 08:25:55.50ID:9Fga/9QY007269
2012/11/29(木) 11:37:07.68ID:???>>69のような統計クエリや、MANY_MANYリレーションをつくるときはやっぱりActiveRecordじゃないとダメですよね?
今はHAS_MANYになってるけど、これはもうMANY_MANYに変わります
そうなるとやっぱりAR使うしか無いような気がするんですが、どうでしょう??
0073nobodyさん
2012/11/30(金) 01:58:51.59ID:???YiiはARのAttributesに含まれてるほうが何かとチョロいので個人的にはDBにいれるなー
好みじゃないかなー
0074nobodyさん
2012/11/30(金) 20:31:11.62ID:???基本変更が殆どないマスタデータって考えれば、テーブル管理でもいいと思うよ
ここは定数、こっちはテーブル、みたいな使い分けするよか全部テーブルってしたほうが
例外パターンとかを決める必要がないので自分はこっちのほうが好きかな
あとは要件次第(ものっそいシビアなパフォーマンス要求されるならDBアクセスも減らすべきじゃね、とかそういう)
0075nobodyさん
2012/12/02(日) 01:56:03.63ID:???書いてもいいのよ
0076nobodyさん
2012/12/04(火) 04:16:03.11ID:???0077nobodyさん
2012/12/09(日) 18:38:17.30ID:???0078nobodyさん
2012/12/14(金) 00:08:17.77ID:???ダイナミックコンテンツを使え。超便利。
サイトトップはメインはページキャッシュ使いつつ、ログイン表示とか部分的に動的に出力してる。
ttp://www.yiiframework.com/doc/guide/1.1/ja/caching.dynamic
0079nobodyさん
2012/12/15(土) 01:11:33.24ID:???どこでどういうキャッシュ使えばいいのかまとめて欲しい
ってわけで>>75のサイトで誰か書いて
0080nobodyさん
2013/01/01(火) 12:25:04.53ID:???ttp://www.yiiframework.com/news/65/yii-php-framework-1-1-13-is-released/
0081nobodyさん
2013/01/01(火) 13:30:37.55ID:???大して変わったことないかな?
0082nobodyさん
2013/01/03(木) 11:55:48.96ID:???0083nobodyさん
2013/02/18(月) 22:34:43.16ID:???ttp://gcwiki.jp/kaibuz/index.php?kako_wiki_zs8
CDbTransactionで検索。
エラーメッセージが同じ。
0084nobodyさん
2013/03/29(金) 04:09:20.27ID:2KTyq7Pr空白の場合だけ設定したいんだけどどうしたらいいの?
0085nobodyさん
2013/08/26(月) NY:AN:NY.ANID:???http://webrevisions.com/tutorials/php-framework-the-best-php-framework-for-2013/
http://codegeekz.com/best-php-frameworks-for-developers/
http://www.phpframeworks.com/top-10-php-frameworks/
日本語でもブログとかで情報がぼちぼち出てきてる感じだけど、まだまだ注目されてる感じじゃない。
公式ガイドの日本語訳も頑張ってるけど、クックブックが翻訳されればもっといいんだけどね。
・Yii Application Development Cookbook Second Edition
http://yiicookbook.org/
・サンプルコード
https://github.com/samdark/yii-application-cookbook-2nd-edition-code
0086nobodyさん
2013/08/27(火) NY:AN:NY.ANID:???0087nobodyさん
2013/08/28(水) NY:AN:NY.ANID:???プログラムって英語じゃん
0089nobodyさん
2013/09/12(木) 02:27:24.57ID:???フォーム処理の際に自動的に現在の日付を入れてくれるって機能はないですか?
0090nobodyさん
2013/09/12(木) 02:28:55.78ID:???×DBの日付のカラム名をcreated_atに指定したりすると、
○DBの日付のカラム名をcreated_atなど決められた名前にすると、
0091nobodyさん
2013/09/12(木) 03:08:31.14ID:???すいません。自己解決しました。
beforeSaveをオーバーライドすればよかったんですね。
0092nobodyさん
2013/09/12(木) 04:29:48.17ID:???updated_atも処理出来る
0093nobodyさん
2013/09/12(木) 07:56:54.44ID:???カラム名で判別するわけじゃないけど、自動タイムスタンプの3パターンやり方が書いてある
・rulesのonオプションupdate,insert
・beforeSave()
・CTimestampBehavior
0094nobodyさん
2013/09/18(水) 02:56:53.89ID:???今日の朝はまでは問題なく仕事から帰ってきたら突然なってました。
特にmain.phpの設定は変えていないのですが・・・・。
何かわかる方いらっしゃいますか?
runtimeのパーミッションは777
application.logのパーミッションも777にしてみましたが、ダメでした。
application.logファイル自体を消してみても、新しいファイルは作成されませんでした。
以下がmain.phpの設定です。
'log'=>array(
'class'=>'CLogRouter',
'routes'=>array(
array(
'class'=>'CFileLogRoute',
'levels'=>'error, warning',
'filter'=>'CLogFilter',
),
array(
'class' => 'CProfileLogRoute'
),
// uncomment the following to show log messages on web pages
/*
array(
'class'=>'CWebLogRoute',
),
*/
),
),
0095nobodyさん
2013/09/18(水) 12:50:10.17ID:???0096nobodyさん
2013/09/18(水) 20:21:28.55ID:dlh3yGeJviewのウィジェットが訳わかめ
CListViewだのCGridViewだのみんな使ってるの?
0097nobodyさん
2013/09/19(木) 00:25:29.41ID:???ありがとうございました。trace加えたら、ログが出てきました。
でも、traceを消したら、またでなくなるって感じです。
今までtrace無い設定でうまくログが出てたんですけどね・・・。
0098nobodyさん
2013/09/19(木) 12:50:41.68ID:8wxU5XUChttp://www.yiiframework.com/forum/index.php/topic/4532-renderpartial-vs-widget/page__p__24257#entry24257
0099nobodyさん
2013/09/19(木) 18:01:17.83ID:???0100nobodyさん
2013/09/19(木) 23:44:39.87ID:???面倒なことを勝手にやってくれるすごい奴
0101nobodyさん
2013/09/20(金) 11:06:08.32ID:???これデフォだったらもっと利用者増えそう
0102nobodyさん
2013/09/20(金) 18:30:34.45ID:???version3にも対応楽しみ
■ このスレッドは過去ログ倉庫に格納されています