トップページ⇒php
1001コメント266KB

lt;?php symfonyとフランチョスのスレ ?gt;

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/11/18(土) 08:05:59ID:???
■symfony
http://www.symfony-project.com/

■askeet
http://www.symfony-project.com/askeet

■The symfony book
http://www.symfony-project.com/content/documentationHome.html

■symfonyで作られたサイトはこちら
http://www.symfony-project.com/trac/wiki/ApplicationsDevelopedWithSymfony#Japan


ver.1まで間近 がんばれフランチョス & ファビエンヌ フュージョンで
開発パワー2倍だ!


0446nobodyさん2007/03/06(火) 02:45:15ID:???
yum install php-dom
0447nobodyさん2007/03/06(火) 03:11:59ID:???
>>444,446
激しくthanks!
あやうく色々入れ直すところだった
0448nobodyさん2007/03/06(火) 03:50:43ID:???
>>445
設定してるけど特に遅さは気にならない
大量のオブジェクトをアサインしたら遅くなるのかな
0449nobodyさん2007/03/06(火) 06:18:28ID:???
>>437
In the production environment, the configuration is cached, so the configuration files are parsed (and executed) only once after the cache is cleared.
って言ってるから完全に動的ではないんじゃ?
設定ファイル中の定数的な値を嵌め込んだりはできるけど
0450nobodyさん2007/03/06(火) 06:34:36ID:???
いつの間にかコンバータも出来てるじゃん
プレビューリリースで不満だったところが全部直ってる感じ。
素晴らしい。
0451nobodyさん2007/03/06(火) 17:57:11ID:???
repopulationのfillinが効かないんだけど、つかえてる人いるの?
0452nobodyさん2007/03/06(火) 18:09:52ID:???
criteriaはsqlの隠ぺいのために使ってるんだろうけど、要らないね。
ものすごくいらない。
あと俺の考えだとモデルクラスがテーブルごとに作られるのもおかしい。
クラスは共通、オブジェクトに名前つけて区別すれば良い。
コードを自動生成するとはいっても滅茶苦茶質の悪いものを大量に吐いてるだけな印象。
手で組むとしたらありえないくらい冗長なコードになってる。
なんで世界的に勢いのあるFWがこんなレベルなんだ。
0453nobodyさん2007/03/06(火) 19:23:13ID:???
文句はsymfonyじゃなくて、Propelへどうぞ
Propelいやなら、Doctrineでも使ってみたら
0454nobodyさん2007/03/06(火) 19:30:08ID:???
>>452
>あと俺の考えだとモデルクラスがテーブルごとに作られるのもおかしい。
>クラスは共通、オブジェクトに名前つけて区別すれば良い。
これに関しては同意しかねる、O/Rマッパすらないんじゃ話にならねえ

が、propelがイケてないのは同意
railsのactiverecordを真似てphpで実装しようとすると
どうしても言語実装のせいで限界が出てくるので
モデルクラスを先に全部生成しちゃってお茶を濁してる感じ
実装上しょうがないのはわかるがあまり好きじゃない
04554522007/03/06(火) 19:45:19ID:???
>>454
俺が言ってる設計は、例えば
$userinfos=sf_db::getTable("userinfo");
$articles=sf_db::getTable("article");
というようなもの。
コード書くときはいつもこういう設計をしてるし実際うまくいってると思う。
0456nobodyさん2007/03/06(火) 20:00:36ID:???
fillinつかえてない?
frontendで見たときにfilterのとこちゃんと見てみて。

あと、htmlのキャッシュどうなってる?
0457nobodyさん2007/03/06(火) 20:33:43ID:???
symfonyのアクションクラスの中でpearのDB.phpをrequireするとエラー出る?
symfonyのgetConnectionとexecuteQuery使うと
返値の結果セットがfetchRowもってなくて面倒なのでDB.php使いたい。(使うしか方法が分からない)
doSelectの返値はたしかtoArrayメソッドがあるけど、executeQueryの返値にはないとか
非常にめんどいが、こんな仕様にする必要があるのだろうか?
とりあえず俺は検索を実行して配列を得たいのだけど、どうすれば良いんだろう?
本当はdoselectjoinallとかが使えれば良いんだけど変な動作するし
一つjoinするだけならdoselectjoinxxxxでいけるけど二つ以上はダメとかそんな仕様ありえんし。
04584572007/03/06(火) 20:35:25ID:???
配列じゃないからarray_mergeもうまくいかんし
symfonyはjoinに対してどんな手段を提供してるの?
0459nobodyさん2007/03/06(火) 20:36:07ID:???
fillin使えてない人はform名入れるところにform内要素名入れてるんじゃね?
俺はそれでつまった
0460nobodyさん2007/03/06(火) 20:44:01ID:???
DBだけは自前実装してる
「こうしたいんだけどどうするんだろう?」の疑問を調べるのに
時間食いまくりでぶち切れた。
04614572007/03/06(火) 20:49:18ID:???
ああ俺もたった今ぶち切れたところだ
mysqlに直接ログインして手で叩いて複数レコード返るのを確認したSQLが
$con=Propel::getConnection();
$rs=$con->executeQuery($sql);
var_dump($rs);
ってやると1レコードも返ってきてないのはなぜだなぜ挙動が違うんだ
糞仕様のせいでかえれねえええええええええええええええええええええええ
0462nobodyさん2007/03/06(火) 22:18:22ID:???
PDOで実装してくれ。

必ずプリペアドもつけてくれよ。
0463nobodyさん2007/03/06(火) 22:56:21ID:???
>>457
もちつけ。
$rsがNULLってるってこと?
それとも$rsが結果の配列ではないという事なのかな?

俺の環境では$rsにはイテレータが返ってきて、

while($rs->next()){
print $rs->get("COLUMN_NAME");
}

って感じでアクセス出来るけどなぁ。
0464nobodyさん2007/03/07(水) 00:04:54ID:???
漏れも>>407と同じエラー(ERROR: pear.symfony-project.com/symfony not installed)
って出てインスコできないんだけど原因わかる人いたら教えて
ちなみにbetaつけてやってみたけど�_だった orz
0465nobodyさん2007/03/07(水) 00:22:46ID:???
あーやっぱりsfExecutionFilterとかsfValidatorManager書き換えてえ
ハードコーディング癖は直ってねーなfabien
カンファレンスで直訴してくるか
fucking連呼で
0466nobodyさん2007/03/07(水) 01:23:10ID:???
オリジナルヘルパの上に一枚ラップする感じに
myヘルパ書いたら結構いい感じになった。
こういうのは生でするもんじゃねーな
0467nobodyさん2007/03/07(水) 04:35:52ID:???
symfonyはXSS対策のトークン用意してないの?
0468nobodyさん2007/03/07(水) 04:41:57ID:???
なにそれ。
0469nobodyさん2007/03/07(水) 06:05:56ID:???
正しい画面からポストされたかどうかを確かめるワンタイムトークン…
0470nobodyさん2007/03/07(水) 06:11:30ID:???
それってXSS?

XSS対策は escaping_strategy じゃないっすか?
0471nobodyさん2007/03/07(水) 06:16:46ID:???
あ、CSRFか…
0472nobodyさん2007/03/07(水) 06:23:30ID:???
入力画面1→入力画面2→入力画面3→登録
って流れだったら、
画面遷移ごとにバリデーションしておいて、
登録前にもう一回全部をバリデーションするじゃん。
そうなるとvalidate/*.ymlが冗長になるけど
そのあたりどうしてますか?
0473nobodyさん2007/03/07(水) 08:33:59ID:???
> 登録前にもう一回全部をバリデーションするじゃん。
そんなことはない。

バリデーションさせたいときに、各アクションのvalidate/*.ymlを
作ればよい。
0474nobodyさん2007/03/07(水) 09:13:32ID:???
>>467
setFlashで簡単に実装できる
04754572007/03/07(水) 11:48:08ID:???
>>463
$rsはNULLではないが、
$rs->getRow()の結果がNULL
0476nobodyさん2007/03/07(水) 13:51:38ID:???
doSelectJoinAll使ってる人いますか?
0477nobodyさん2007/03/07(水) 14:08:27ID:???
つかってます。
0478nobodyさん2007/03/07(水) 15:22:41ID:???
>>473
入力画面1からURL手打ち等で入力画面3に入られたりしたら
データ揃ってない事態になるでしょ?
そういう時のために最後に一括チェックしませんか?
0479nobodyさん2007/03/07(水) 15:28:19ID:???
そこでflashですよ!
0480nobodyさん2007/03/07(水) 15:35:27ID:???
このスレを見ている人はこんなスレも見ています。(ver 0.20)
昭和51年度生まれの無職スレ Part9 [無職・だめ]
昭和51年度生まれのダメ人間の巣窟スレPart36 [無職・だめ]

前から気になってたが
このスレに昭和51年生まれの駄目人間いるよね。
そんな駄目人間がsymfonyで何をしようとしてるか教えて。
0481nobodyさん2007/03/07(水) 15:44:06ID:???
>>479
遷移ごとにワンタイムトークンチェック?
俺はワンタイムトークンチェックは
決定的な行為の直前=ストレージへのアクセスの直前だけしてるなぁ
戻るボタン使われたりリロードされたりした時に
異常動作になりやすいから。
このへん人によって結構違いそう。
0482nobodyさん2007/03/07(水) 16:18:18ID:???
>>457
つ http://creole.phpdb.org/trac/wiki/Documentation/CreoleGuide#GettingColumnValues
0483nobodyさん2007/03/07(水) 16:46:36ID:???
>>474
1.flashにトークン入れる
2.画面に表示,hiddenにトークンいれる(同時にflashが自動的にクリアされる)
3.POSTされる
4.flashにトークン残ってないから検証できない

ってならない?
0484nobodyさん2007/03/07(水) 17:18:33ID:???
>>478
ごめん、俺はsymfony初心者で今までネイティブ関数でゴリゴリ書いてた
バカだからアドバイスできる立場じゃないんだけど…

1画面移動するごとにDB登録する仕様で作成
→時々、phpmyadmin等で巡回して、変なデータ(最後まで画面遷移して
ないやつ)を見つけたら削除
という方式でやってるよ。
今まで決済絡まないシステムしか作ったこと無いからこの辺結構アバウトかも…
0485nobodyさん2007/03/07(水) 17:27:15ID:???
手動ガベージコレクタンキタコレw
アバウト云々じゃなくて設計の問題かと
0486nobodyさん2007/03/07(水) 17:31:22ID:???
手動GCテラワロス
技術者じゃねえw
0487nobodyさん2007/03/07(水) 17:34:19ID:???
>>483
symfony勉強中でセッション関連まだやってないけど
1.flashにセッション入れる
2.画面表示、またflashにセッション入れる
っていうやり方で出来ない?
0488nobodyさん2007/03/07(水) 17:51:33ID:???
それflashの使い方的にどうなの?
素直にセッションでやりゃいいんじゃないかと
0489nobodyさん2007/03/07(水) 17:56:21ID:???
GCをcronにやらせるとしても
一画面遷移ごとにDB登録はアリなの?
俺はDBは極力いじらせたくないからなるべく少なくする方向でやってるけど
0490nobodyさん2007/03/07(水) 18:02:26ID:???
>>488
たしかに。
0491nobodyさん2007/03/07(水) 18:37:25ID:???
【propel】PHPのORMについて語ろうぜ【peropero】
http://pc11.2ch.net/test/read.cgi/php/1173181854/

O/Rマッパのスレ立てたからよろしく
今interface定義だけでDBがいじれるs2DAOの話題で騒然だから。
propelなんて蹴散らす勢い。
04924872007/03/07(水) 19:02:07ID:???
>>488
確かにわざわざflash使ってなにやってんだろうって気がするけど
普通にセッション使うと、複数人で一つのWEBサイト作ってる時に
セッション配列のキーが別ページで被って気づき難いバグになった事があった。

じゃあ必要無くなった時点でセッション要素をクリアすれば、と思うが
あるページからURL直叩きで他のページに移動した時の
セッションのキー被りは非常に防ぎづらいので、
こういう使い方でもflashは便利だと思う。
0493nobodyさん2007/03/07(水) 19:07:12ID:???
てかセッションに各コンテンツのネームスペースくらい割り当てとけよ
0494nobodyさん2007/03/08(木) 00:06:54ID:???
ブラウザを複数開けていじられる可能性を考えると
DB書きこみ前の一括チェックは欠かせないな。
トークンも画面ごとにネームスペース変えて
上書きが起こらないようにしないといけない。
考えると頭痛くなるが…。
0495nobodyさん2007/03/08(木) 00:13:29ID:???
画面遷移がある限り
セッション変数の中身すら信用できるわけではないってことだよな。
今まで作ったアプリのこと考えると…
\(^o^)/オワタ
0496nobodyさん2007/03/08(木) 00:18:06ID:???
俺も\(^o^)/オワタ
お前も\(^o^)/オワタ
みんな\(^o^)/オワタ
0497nobodyさん2007/03/08(木) 00:19:26ID:???
ピースフレームワークをヒントにしたらいいんかな?
限界状態マシーンとかいう機能を搭載してるらしいが
0498nobodyさん2007/03/08(木) 00:28:10ID:???
つーかsymfonyにセッション変数削除用メソッドなくね?
removeAttributeみたいなのいるだろ
0499nobodyさん2007/03/08(木) 00:31:09ID:???
漏れも気になってた。
ちなみに、nullセットしてるよ
0500nobodyさん2007/03/08(木) 00:33:28ID:???
1.フラッシュにワントークンパスワード入れる、hiddenにも同じ値持たせる
2.次回アクセス時にflashの値とhiddenの値を比較
  また、このアクセス時に前回のフラッシュの値は自動的に消滅

セッションとフラッシュは同じようなものだが
フラッシュは次回アクセス時に消去されることが約束されているセッション

自前でセッションで行うのであればそれでもいいけど
そんなことしなくてもフラッシュ使うといいよ。

というわけで、474は間違い。次回アクセス時にフラッシュは存在する
というわけで、487も間違い。flashにセッションを入れるというのは無意味
0501nobodyさん2007/03/08(木) 00:36:33ID:???
あるんだけどな。。
$this->getUser()->getAttributeHolder()->remove($name, $namespace)
0502nobodyさん2007/03/08(木) 00:39:02ID:???
>>501
WOW! さんくす
さっそくmyUserクラスに追加した
0503nobodyさん2007/03/08(木) 00:53:44ID:???
漏れのsymfonyサイトに静的なhtmlがあるんだけど、
そのhtmlの一部にsymfonyからのデータを参照させたいんだけど、
どうすれば良いでしょうか。
0504nobodyさん2007/03/08(木) 02:30:59ID:???
なかなか難しいことを言ってくるな。
0505nobodyさん2007/03/08(木) 03:48:31ID:???
その静的なhtmlにsymfonyのデータの
誰が見た時のいつの時点の何を表示させるのか
によってちがうだろうな。
0506nobodyさん2007/03/08(木) 03:57:57ID:???
>>504
どこが難しいの?
0507nobodyさん2007/03/08(木) 04:12:01ID:???
symfony内に置く汎用クラスの名前って
大文字ではじめる?小文字ではじめる?
0508nobodyさん2007/03/08(木) 04:18:07ID:???
symfony内ならsfつけて書いてるが、
自分は極力汎用クラスは外に出して、PEARコーディング規約で
書くようにしてる。
0509nobodyさん2007/03/08(木) 07:01:00ID:???
俺は自前クラスはsf付けないな
symfony純正のしるしという認識だ
0510nobodyさん2007/03/08(木) 07:17:04ID:???
その認識はやめたほうがいい。プラグインのクラスにもsfつきまくってるだろ。
別に純正の印ではない
0511nobodyさん2007/03/08(木) 07:19:41ID:???
symfony本家のカンファレンスのページに
ちんぽにーの名で書き込んだ奴
お前らの一人だろw
0512nobodyさん2007/03/08(木) 07:24:20ID:???
>>510
やめた方がいいことはないだろw
何の弊害もないんだから。
自前クラスとsymfonyパッケージ中のクラスの区別が付いて
むしろいいんじゃね?
05135032007/03/08(木) 08:34:31ID:???

インクルードすればいいのかなと思ったんだけど、、
sfのどのファイルをインクルードすればいいのか分からない。
0514nobodyさん2007/03/08(木) 15:32:06ID:???
もっと基礎からやった方がいいんじゃないか?
静的ファイルからインクルードするという意味が分からない
JavaScriptを吐いて動的に表示するというわけでもなさそうだし。
0515nobodyさん2007/03/08(木) 18:00:16ID:???
http://www.mail-archive.com/[email protected]/msg00559.html

インストールしてみたのですが、これと同じ症状が出て困っています。
読むとeAcceleratorを入れていると問題みたいなのですが
ウチはそんなの入れてないですし…。
0516nobodyさん2007/03/08(木) 19:10:47ID:???
普通のHTMLからsymfonyのviewの値を参照したいんだよ。
0517nobodyさん2007/03/08(木) 19:14:57ID:???
普通のHTMLにそんな機能はない
0518nobodyさん2007/03/08(木) 19:35:45ID:???
で、その普通のhtmlというのに表示させたい値というのは
symfonyで誰が見たどの時点の値なんだと聞いている
0519nobodyさん2007/03/08(木) 20:37:17ID:???
使ってる用語の曖昧さといい
symfony使うの早すぎる段階だろ…常識で考えて。
簡単簡単て言われてるけど全然簡単なものじゃないよこれ。
素のPHPの方がはるかに簡単。
0520nobodyさん2007/03/09(金) 01:02:21ID:???
>>516
MVCの意味とか分かってますか?
そもそも、なんでsymfony使ってるんだ?
0521nobodyさん2007/03/09(金) 03:43:04ID:???
>>507
お前はもっと公式をよく読め。
symfonyは変数もクラスもアッパーキャメルケースをコーディング規約としています。
例外は二つ、symfonyコアクラスにはsfを、そしてテンプレートでは
アンダースコアでセパレートされた名前を使います。
コアクラスでsfを使っているのは、既存のPHPクラスライブラリとの重複を避けるため。

http://www.symfony-project.com/book/trunk/02-Exploring-Symfony-s-Code#Symfony%20Core%20Classes
0522nobodyさん2007/03/09(金) 05:46:42ID:???
myActionやmyUserもMyAction,MyUserにした方がいいんかな
0523nobodyさん2007/03/09(金) 09:25:56ID:???
アッパーキャメルケースって言葉初めて聞いたw
調べてみたらなるほどこういうことか。。
0524nobodyさん2007/03/09(金) 11:19:08ID:???
http://gekibaka.s181.xrea.com/oreask/gekibaka
0525nobodyさん2007/03/09(金) 11:46:45ID:???
すみません、今日symfonyインストールしたんですが、
Win機:symfony.batができていて、symfonyコマンドも使える(init-project〜propel-model-buildまでOK)
CentOS機:phpのbinディレクトリにsymfonyはできているが、symfonyコマンドが使えない
という状態に陥って困っています。

どちらもローカルPCで、pearコマンドでインストールしました。
Cent機ではpearコマンドを使うときphpのbinディレクトリから./pearとして使っていたのですが、symfonyの
コマンドでプロジェクトを作る時は、プロジェクトディレクトリに居ないといけませんよね?
どうやって使えばいいのでしょうか??
私のやり方は何か根本的に間違っていますか?

phpは5.2.1をjp.php.netからDLしてソースからビルドしたものです。
configure時に--disable-cgi --enable-cliでCLI版を指定済みです。
どなたか分かる方いらっしゃいましたら教えていただけませんか?
0526nobodyさん2007/03/09(金) 12:23:24ID:???
PEAR_BINにパスひとつ通せやしないこんな世の中じゃ
0527nobodyさん2007/03/09(金) 12:37:32ID:???
>>523
初めて聞いたておまえ…
0528nobodyさん2007/03/09(金) 18:39:40ID:???
俺も聞いたことなかったよ
なんとなく慣習的にクラス名はアッパー
メソッド名はローワーのキャメルケースにしてたけど
0529nobodyさん2007/03/09(金) 18:42:28ID:???
ん?変数もアッパーキャメル…?
なんか気持ち悪くね?
0530nobodyさん2007/03/09(金) 20:02:05ID:???
使いやすくする為に個人的なクラス群を作って
どんなプロジェクトでもいれてるんだが
i とか v もそうしないとだめなのかね
0531nobodyさん2007/03/09(金) 20:20:53ID:???
FOR ($I=0;$I<100;$I++)
とか書くとBASICっぽいw
0532nobodyさん2007/03/09(金) 21:38:10ID:???
>>521
symfonyのコードの変数どこ見てもlower camelcaseじゃん
ドキュメント間違ってるんじゃね?
0533nobodyさん2007/03/10(土) 00:39:04ID:???
アッパーキャメルでアッパー決めるぅ〜♪
0534nobodyさん2007/03/10(土) 03:23:40ID:???
>>529
俺もそう思ったが、実際そう書いてある
0535nobodyさん2007/03/10(土) 03:26:54ID:???
>>524

Warning: session_write_close() [function.session-write-close]: write failed: Disk quota exceeded (122) in /virtual/gekibaka/php/lib/php/symfony/user/sfUser.class.php on line 214

Warning: session_write_close() [function.session-write-close]: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in /virtual/gekibaka/php/lib/php/symfony/user/sfUser.class.php on line 214
0536nobodyさん2007/03/10(土) 03:37:25ID:???
>>524
よく発見したな
0537nobodyさん2007/03/10(土) 03:49:53ID:???
>>455
なかなかよさそうと思ってそんな感じにしようと思ったが
全部同一クラスだとテーブル独自のラップが出来ないな
やっぱ1テーブル1クラスがよさげ
0538nobodyさん2007/03/10(土) 04:02:46ID:???
>>454
>railsのactiverecordを真似てphpで実装しようとすると
>どうしても言語実装のせいで限界が出てくるので
別にrails真似てつくったものでもないし、
activerecord自体を真似るのに言語実装の限界も関係ないよ。
propelはもっとずっと前からあるものだし。
activerecordを真似るのはPHPでもさほど難しいことではない。

propelのコード生成は俺はむしろ助かってるけどね。
activerecordみたいに実体がないと、IDEとかでの保守がすげぇ大変。
コード補完やPHPソース側でテーブルの構造がさっと確認できるpropelのような
マッパの方がずっといい。特にテーブル数が増えてくるとそう感じる。
0539nobodyさん2007/03/10(土) 04:21:07ID:???
http://wiki.rails2u.com/2005%2F06%2F02
こことか面白い実験してるな
0540nobodyさん2007/03/10(土) 07:58:00ID:???
loginActionを作成しても
デフォルトのCredentials Requiredページに飛ばされる
何・故?
0541nobodyさん2007/03/10(土) 09:04:03ID:???
frontend でちゃんとlogみろ。
{sfUser} automatic user logout
こんなログないか?
0542nobodyさん2007/03/10(土) 09:12:50ID:???
レスありがとう
なんと正しいテンプレートファイルがないだけだった
ない時は代替で変なの出さずにエラーにしてくれYO!
0543nobodyさん2007/03/10(土) 09:19:08ID:???
普通のActionだとテンプレートファイルがない時はエラーになるのに…
なんだこの糞仕様
fabienが許せない (#゚Д゚)フルフル
0544nobodyさん2007/03/10(土) 09:26:40ID:???

日本人の考え not equal フラ公の考え
0545nobodyさん2007/03/10(土) 09:28:14ID:???
Error404もテンプレートをなくすとデフォルトテンプレートが表示される
イレギュラーなページでは
テンプレートが作られないケースもあるだろうという配慮なのか・・・
■ このスレッドは過去ログ倉庫に格納されています