Zend Framework Part4
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/02/09(火) 22:21:24ID:???http://framework.zend.com/
マニュアル
http://framework.zend.com/manual/ja/
翻訳状況
http://mikaelkael.dyndns.org/checker/language/details/lang/ja
http://framework.zend.com/wiki/display/ZFDEV/Japanese+(Nihongo)
バグ報告
http://framework.zend.com/issues/secure/Dashboard.jspa
API
http://framework.zend.com/apidoc/core/
前のスレッド Zend Framework Part3
http://pc11.2ch.net/test/read.cgi/php/1239320100/
0489nobodyさん
2010/10/09(土) 18:53:54ID:1KEL8kwG単純に、insertならちゃんとデータが登録されたか、updateなら変更されたか
そういうことを確認したいんです
それが確認出来るメソッドというか機能は備わってないんでしょうか?
0491nobodyさん
2010/10/09(土) 21:46:07ID:???かなり偏見かもしれないが、良くも悪くも
・CakePHPはウェブアプリケーション開発のためのFW
・ZendはPHPプログラムのためのFWって感じで、PEARの集まりみたいな感じ
web開発するにあたって、cakeならすんなりできる部分も、
Zendなら色々classを呼び出すなり、子クラス実装するなりしなきゃいけなかったりする。
Zendの方がハードルが高いのはまあ間違いない。
0492nobodyさん
2010/10/09(土) 22:19:17ID:???0493nobodyさん
2010/10/09(土) 22:27:33ID:v6/8xFVglastInsertId() とか使えばいいんじゃないの。
http://framework.zend.com/manual/ja/zend.db.adapter.html#zend.db.adapter.write.lastinsertid
0494nobodyさん
2010/10/10(日) 01:21:37ID:???ありがとうございます。
CakePHPとZendFrameworkは思想そのものが違う感じなんですね。
使いやすさを除いた、たとえばWebサービスや通常のサイトを作ったときの速度はどうでしょうか?
もちろん、それぞれの規模やプログラマ/エンジニアの腕によって大きくばらつくのはわかりきってるのですが・・・
どうしても「フレームワーク=ソースコードが太る」というイメージがあるので、実際に使って開発した感想も聞きたいです。
PHPプログラムはZendFrameworkの方が向いているということなので、一旦はZendFramweorkに挑戦してみたいとは思いました。
繰り返しの質問になりますが、よろしくおねがいします。
0495nobodyさん
2010/10/10(日) 01:32:12ID:???0496nobodyさん
2010/10/10(日) 01:49:57ID:???数年前と比べて、最近はハードウェアが高性能化してるからな・・・
「フレームワーク有りと、無しでは実行速度が2倍違う」と仮定しても、
0.01秒が0.02秒になるようなレベルで、体感速度は変わらない。
開発チームがフレームワークに慣れれば開発効率は数倍跳ね上がる。
コード肥大化による動作速度の低下を下げたいなら、
その人件費をハードウェアにつぎ込む方が低コストかつ、運用も楽。
そんな感じ。
0497nobodyさん
2010/10/10(日) 05:06:02ID:???0498nobodyさん
2010/10/10(日) 05:06:59ID:???0499nobodyさん
2010/10/10(日) 08:03:13ID:???人にもよるだろうけど、開発が早いのはcakeだと思うよ。
簡単なプログラムつくるならFW使うとソースは増える。
0501nobodyさん
2010/10/10(日) 17:09:41ID:???VPS十台借りても1万くらいだし
最初は一台で作って
重くなってきたら役割ごとに分割
それでも重いなら並列化
って感じで増やしてけば対した問題じゃない
もちろん、負荷、売上がちゃんと整合性取れる範囲の話だがフレームの問題じゃなくなる
0502nobodyさん
2010/10/10(日) 22:37:53ID:???ZendとかCakeとか、この手のPHPのフレームワークは負担が大きいので使わない。
0503nobodyさん
2010/10/10(日) 23:39:03ID:???ケースに困る?
YahooとかFacebookとか・・・君の請ける案件はそんなに大規模な案件ばかりなのかい?
多分、ここにいる人の大半は数人〜数十人規模の中規模開発者だと思うよ。
0504nobodyさん
2010/10/11(月) 00:50:45ID:???0505nobodyさん
2010/10/11(月) 01:03:04ID:???0506nobodyさん
2010/10/11(月) 02:41:41ID:???キャッシュサーバとか検討してるレベルだし
0507nobodyさん
2010/10/11(月) 11:21:25ID:???それぞれのチームが働きやすいようにもろもろ準備してるだけ。
しかも高付加なのはトピックとかの上位10%ほどのサービスを除けば、
中の下のエンジニアでハードウエアで済ますっていう世界だよ。
ま、おれはその中の下より下なわけだがw
0508nobodyさん
2010/10/11(月) 20:09:48ID:???いろんな意見ありがとうございます。
エクステンションの書き換えとか追加はまあ出来るんですけど、PHP全体の挙動を詳細に解析したことがあるわけじゃないので、思わぬ穴ができそうでやりたくないんですよね。
ハードの性能がある程度あれば、通常の開発規模では気にしなくていいことがわかりました。
実際にサービスをリリースして運用を開始してから、もし問題があればフレームワークの排除等も検討してみます。
ありがとうございました。
0509nobodyさん
2010/10/13(水) 17:49:35ID:9/s0PB03zend全く関係なくて申し訳ないんだけどアクセス数とCPUとメモリ教えてくれない?
0510nobodyさん
2010/10/18(月) 11:50:14ID:???アクセス数についてだけど、トピックに上がった記事で人気があると、
だいたい秒間200アクセスを超えてく。
CPU、メモリについては聞いてどうするな世界だな。
サーバーはごく普通のレベル。
自前のDCにDELLとかの平均的なサーバーを入れてるだけ。
0511nobodyさん
2010/10/18(月) 12:02:03ID:???0512nobodyさん
2010/10/18(月) 12:41:26ID:???0514nobodyさん
2010/10/18(月) 16:11:50ID:???0515nobodyさん
2010/10/18(月) 18:11:43ID:???なんでお前が俺の書き込みに答えてるんだよw
具体的な数字は言えないけどやってくるのが殆どアフィリタグ踏んでくるアクセスだから
DB書き込みやらんとならんし結構重いんだよね
むしろWebサーバってよりロードバランサやSSL処理の方が厳しい感じなのでサーバのCPUなんかは持てあましてる
10台用意してるのはどっちかというと障害対策や不意のピークのためだから
平時はピークでもせいぜい50%くらいしかリソース使わん
0516nobodyさん
2010/10/18(月) 21:04:03ID:???海外とかでもいいから知ってる人いたら教えて
0517nobodyさん
2010/10/18(月) 21:59:15ID:???// ̄~`i ゝ `l |
/ / ,______ ,_____ ________ | | ____ TM
| | ___ // ̄ヽヽ // ̄ヽヽ (( ̄)) | | // ̄_>>
\ヽ、 |l | | | | | | | | ``( (. .| | | | ~~
`、二===-' ` ===' ' ` ===' ' // ̄ヽヽ |__ゝ ヽ二=''
ヽヽ___// 日本
_____ _____ ______ _______
| ウェブ | | イメージ | | グループ | | ディレクトリ |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
._________________
|MVC sample │・検索オプション
└────────────────┘・表示設定
| Google検索 | I'm Feeling Lucky | ・言語ツール
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◎ウェブ全体から検索 ○日本語のページを検索
0518nobodyさん
2010/10/19(火) 02:49:28ID:???0520516
2010/10/19(火) 09:19:22ID:???うまい人がどんな書き方(わかりやすさ・メンテナンスのしやすさなど)してるかを
いろいろと知って取り入れられるものはないかという探究心から聞いてみただけなのでないならないでいいんです。
0521nobodyさん
2010/10/19(火) 09:50:18ID:???IndexController
と書くところを
ModuleName_IndexController
ProjectName_IndexController
のように冗長に。
PDTで複数プロジェクト編集する時にクラス名が被るとコード補完が厄介なんだ・・・
何か上手い方法ないかね
0524nobodyさん
2010/10/19(火) 17:58:33ID:???コントローラ内でメソッド呼び出すとき、
$this->hogeXXXで保管しようとしたら、
他のプロジェクトの同名コントローラのメソッドがでてきちゃうんじゃね?
0525nobodyさん
2010/10/19(火) 19:56:12ID:???ControllerにAction以外のメソッド書くってこと?
private でも他のメソッド出てきちゃうんだっけ?
0526nobodyさん
2010/10/19(火) 22:05:23ID:zJOQfrg+Ver.1.10.8のZend_OpenId_Consumerの733行目に『/* TODO: OpenID 2.0 (7.3) XRI and Yadis discovery */』があるよ。
やっぱり、mixiのOpenIDだめだった。
0527nobodyさん
2010/10/19(火) 22:19:07ID:???0528nobodyさん
2010/10/19(火) 23:13:44ID:???コントローラ固有だったり、サイト全体で使うようなショートカットメソッドを登録する事があるんよ。
$this->log(); とか $this->getXxx() みたいなのを・・・
privateにしててもクラス名が同じだと補完対象にされてしまう。
コントローラにアクション以外書くのってまずい?
0529nobodyさん
2010/10/19(火) 23:28:47ID:???0530nobodyさん
2010/10/20(水) 04:30:26ID:???0531nobodyさん
2010/10/20(水) 12:10:17ID:???結構いろんなサンプルとかでやられてるよな
0532nobodyさん
2010/10/20(水) 13:31:25ID:???放置したほうがいいと思う。
$thisで同名他クラスのメソッド出てきちゃうのは
そのうちPDTのほうで対応されそう。
heliosで親クラスの補完が変だったのもSR1で改善されたし。
0533509
2010/10/20(水) 17:08:16ID:goNec+dl質問したの俺だよ、答えてくれてありがとう
サイトの運営ってプログラム書ければ良いワケじゃないんだね、
わかってたけどトラブル発生時の対応とか考えると大変だわ
みんなはプログラム書く以外にシステム設計とかもやってるの?
>アフィリタグ踏んでくるアクセスだからDB書き込みやらんとならん
これってアクセス解析のためだよね?
うーむ、勉強になったよ
0534nobodyさん
2010/10/21(木) 01:30:25ID:???>>532
Zend_Controller_Actionのコード見る限り、
普遍的なメソッドはController自体に登録してあるしね。
0536nobodyさん
2010/10/21(木) 05:14:21ID:???_fowerdとか_redirectとか他にも色々、てかコード読めよw
Actinは xxxAction って命名規則があるんだし、
ActionCtonroller = Actionのみを記述するものでは無いってこった
0538nobodyさん
2010/10/21(木) 07:16:01ID:???別に?無くてもコントローラとしては機能するよ。
俺がいいたいのは、コントローラにはアクション以外定義するのはおかしいなんて事は無い。
それだけだ。
0539nobodyさん
2010/10/21(木) 07:23:46ID:???0540nobodyさん
2010/10/21(木) 07:32:49ID:???自分がそれを継承して作るコントローラに、アクション以外の(コントローラから逸脱する)ロジックなり処理なりを実装するのは
MVCの考えに反するよ。
てかZend_Controllerを見たらAction以外のメソッドがあるから定義しておかしくないなんてのは余りにも短絡すぎ
無かったらユーザがActionだけ書いて動くわけないでしょ
0541nobodyさん
2010/10/21(木) 10:18:49ID:???ユーザは好きなように使えばいいのさ
0542nobodyさん
2010/10/21(木) 11:09:59ID:???MVCの思想としても_fowardをアクションコントローラに実装する必要は無い。
例えばZFで言えばヘルパでもいい。
>>540
最初から全てを書くとは誰もいってなくね?
Action間で共有するメソッドやログ出力ショートカット程度しか言われてない気が。
0543nobodyさん
2010/10/21(木) 14:12:10ID:???各ControllerでActin以外に独自メソッドいろいろ書いてたら、
将来的なZFのバージョンアップで拡張されたときに
不意なオーバーライドしちゃって動かなくなりそうで怖い。
間に1サブクラスかませてそこでやるならまだしも。
0544nobodyさん
2010/10/21(木) 15:03:42ID:???Zenc_Controller_Actionを継承した基底コントローラは最低限用意しておく
各コントローラは基底コントローラを継承しておく
全体で必要なら基底コントローラ、
コントローラ固有ならそのコントローラに書く
という感じかな。
オーバーライドしてしまって動作しなくなるケースって相当希だと思う。
0545nobodyさん
2010/10/21(木) 19:36:11ID:???0546nobodyさん
2010/10/22(金) 01:09:01ID:???0547nobodyさん
2010/10/22(金) 01:53:39ID:???アノテーション自体は定義出来るし
ランタイム時にReflectionクラスで取得する事も出来るので
必要だと思うなら自分で作ればいい
作ってるうちに >>546 と同じ答えにたどり着くと思うがw
0548nobodyさん
2010/10/22(金) 13:26:45ID:???単に @deprecated とかPDTでも対応してて便利だし、
そのレベルであれば良いなあって。
0549nobodyさん
2010/10/22(金) 15:12:14ID:qwjMjkx8(削除処理がされたら完了画面にリダイレクトする)
viewの設定をどうしたら良いの?
phpエラー(warning)を吐かれてるのを止めたいんだけど…
ルーティングで対処するのか、それともdeleteAction()の中で何か書くのかわからないです
routingは以下のようになってます
routes.scheDelete.route= "/admin/schedule/delete/*"
routes.scheDelete.defaults.module= "admin"
routes.scheDelete.defaults.controller= "Schedule"
routes.scheDelete.defaults.action= "delete"
routes.scheDelete.type= "Zend_Controller_Router_Route"
回答お願いしますー
0550549
2010/10/22(金) 15:13:38ID:qwjMjkx8どうせ画面の表示はないのだから/schedule/delete.tplを用意していないのです。
0552nobodyさん
2010/10/23(土) 00:37:26ID:???deleteActionの最後で_foward()か_redirect()すればいい。
画面を描画したくないなら、viewHelperを無効にすればいい。
http://framework.zend.com/manual/ja/zend.controller.action.html
0553nobodyさん
2010/10/23(土) 00:50:00ID:???>>543
マニュアル読んで気がついたが、
「自分のウェブアプリケーション用に便利な機能を実装していく一方で、
同じような前処理やちょっとした処理をあちこちのコントローラで書いているといったことはありませんか?
そのような場合は、Zend_Controller_Action を継承した共通基底コントローラクラスを作成し、
共通処理をそこにまとめていくようにしましょう。 」
と明記されてるね。
http://framework.zend.com/manual/ja/zend.controller.action.html
0554nobodyさん
2010/10/23(土) 02:16:34ID:???>無かったらユーザがActionだけ書いて動くわけないでしょ
動く。ルーティングを行う為の基底コントローラ(ZFではDispatcher)側の実装の問題だ。
MVCの考え方とやらに従うのであれば、Action以外にもCに実装するべきロジックは多々ある。
それを基底クラスに書くのか、別クラスに書くのか、その実装方法自体はMVCの思想には含まれていない。
0556nobodyさん
2010/10/23(土) 07:14:23ID:???ある程度はキャッシュされるとしても体感しない程度に重くなってる?
0558nobodyさん
2010/10/23(土) 10:58:26ID:???だからCに関するロジックであれば、Zend_Controller_Actionに実装しようが、Dispatcherに実装しようが、他のクラスに実装しようが、
MVC思想とは関係無いんで >>540 の発言の意味がわからねーんだわ。
0559nobodyさん
2010/10/23(土) 11:12:25ID:???>>無かったらユーザがActionだけ書いて動くわけないでしょ
>動く。ルーティングを行う為の基底コントローラ(ZFではDispatcher)側の実装の問題だ。
Cに関するロジックが無くても動くってどういうこと?
0560nobodyさん
2010/10/23(土) 11:31:06ID:???Zend_Ctonroller_ActionにAction以外のメソッドが無くても、
Dispatcherなり、どこかしらに実装しておけば動くって事。
>>540ではAction以外を定義するのはMVCに反すると、
意味不明な書き込みがあったが、Cに関するロジックであれば何処に書こうが何ら問題は無い。
むしろ共有ロジックはActionクラスに書くことをZFは推奨(>>553)している。
0561nobodyさん
2010/10/23(土) 11:56:02ID:???>Zend_Ctonroller_ActionにAction以外のメソッドが無くても、
Zend_Controller_Actionには_forwardや_getParamや_redirectなど
たくさんAction以外のメソッドがあるように見えるが・・・?
0563nobodyさん
2010/10/23(土) 18:28:37ID:???バイトコードキャッシュとか使ってない環境だと
どのくらい影響あるんだろうね。
PHPでもJavaみたいにInterface多用して設計したいけど、
実行時の無駄な処理が気になる。
本番環境ではInterfaceのチェック処理を
無視する設定とかあるのかね?
ZFでも結構多用されてるってことは、ほとんど影響ないのかな?
0565nobodyさん
2010/10/23(土) 19:07:53ID:???君たち話がかみ合ってない。
要はZend_Ctonroller_Action継承した基底Controller作って、
共通の処理はそこに実装。
※出来ればinit()やらpreDispatch()の中だけで済ませる
それを継承した各Controllerで個別に呼び出したい処理は
ActionHelper作る。
でいいんじゃない?
オーバーライド用に容易されてるメソッド以外に、
各ControllerでAction以外のメソッド書かないといけない必要性って
ほとんどないような。手っ取り早いけど。
0566nobodyさん
2010/10/23(土) 19:56:33ID:???ヘルパーブローカを使うとPDTでコード補完出来ないのが不便なんだよなぁ、
どこかしらに @return アノテーション付でgetter定義しておかないとならんし・・・
自分の場合、
プロジェクト基底コントローラ
→ アプリケーション基底コントローラ
→ モジュール基底コントローラ
をそれぞれ継承して作っておいて、
Controllerに共通プロパティやショートカットメソッド定義してるわ。
0567nobodyさん
2010/10/23(土) 20:19:28ID:???>各ControllerでAction以外のメソッド書かないといけない必要性って
>ほとんどないような。手っ取り早いけど。
Controller固有のロジックやプロパティを外部化する必要性もほとんど無いからね
臨機応変に最適な手法を取ればいいと思うよ
無闇に肥大化させるのは好ましくないけれど
将来Zend_Controller_Actionと競合するかもしれないという理由で
実装コストを上げてしまうのは同意し辛いな
0569nobodyさん
2010/10/24(日) 12:51:40ID:???アクションコントローラを作るたびに同じアクションヘルパーを呼ぶ記述書くより
プラグインに共通で書きたいと思ったのでやり方を探しているんですが見つけられません。
0570nobodyさん
2010/10/30(土) 15:35:08ID:CCVX4Qsqこれを再利用する方法ってないんでしょうか?
というのは、たとえば入力フォームのアクションだったらバリデート処理が書いてるけど
同じようなフォームの時、ほとんど中身変わらないのに同じようなのをもう一つ書くのが面倒なんです
具体的に言うと nikki_addアクションとnikki_rewriteアクションとか。。
新規登録時でも書き換え時でもバリデータは同じだけど、アクションを2つに分けると
中身同じなのにもう一つ書くことになって面倒くさいと…
何か良い方法ないですか?
0571nobodyさん
2010/10/30(土) 15:55:15ID:???0572nobodyさん
2010/10/30(土) 15:55:33ID:???難しく考えなくていいよ。
コントローラにnikkiValidateメソッドを作って、
nikki_addとnikki_rewriteから呼び出せばいい。
もしそれが気持ち悪いのであれば、Nikkiクラスでも作るなりして、共通処理をまとめればいい。
0573nobodyさん
2010/10/30(土) 15:57:20ID:???0574nobodyさん
2010/10/30(土) 16:12:06ID:???不明瞭な書き方するからいけないんだよね。
モデルに書けそうなロジックは全部モデルに記述するように試みればまず間違いない。
0575nobodyさん
2010/10/30(土) 16:22:23ID:???汎用性とか徹底したMVCとか考えるとキリが無い。
要はケースバイケース。
コストに見合った実装すればいいよ。
RDBだからとテーブルを無闇に極限まで正規化しないだろう?
0576nobodyさん
2010/10/30(土) 18:06:00ID:???いやまあ、そうなんだけど、そういうと馬鹿はコントローラに全部書いちゃうから。
コントローラに書くことなんてほぼ無いのに。
0577nobodyさん
2010/10/30(土) 18:44:20ID:CCVX4Qsqおおー、ありがとうございます。
そうですね!共通利用するんだから両アクションから呼び出せばいいんだ
なんで思いつかなかったかなー
ありがとうございました
0578nobodyさん
2010/10/30(土) 23:54:53ID:???極端な例だけど、以下のようにロジックがきっちり分別されていれば、
同クラスだろうが、同ファイルだろうがMVC実装は可能。
class Application
{
public function controller() {}
public function model() {}
public function view() {}
}
0579nobodyさん
2010/10/31(日) 00:48:20ID:???0580nobodyさん
2010/10/31(日) 02:04:35ID:???ファイル、クラス、メソッド、好きな方法で区切ればいい
0581nobodyさん
2010/10/31(日) 02:12:58ID:???0583nobodyさん
2010/10/31(日) 04:11:44ID:???オブジェクト指向的に間違いなわけで
0584nobodyさん
2010/10/31(日) 04:36:27ID:???OOP的にも、MVC的にも問題無いと思うよ。
絶対やらんけど。
class MVC
{
public function controller() {}
public function model() {}
public function view() {}
}
0585nobodyさん
2010/10/31(日) 04:46:01ID:???自動車をオブジェクト指向で表す場合に
EngineWheelStealingってクラス作るようなもんだぞw
0586nobodyさん
2010/10/31(日) 04:53:18ID:???0587nobodyさん
2010/10/31(日) 05:44:37ID:???AMVCとかBMVCってクラスができるのか?
それじゃmodelとcontrollerまで対じゃないと破綻するよな
それともa_controller() b_controller()って増やしていくのか?
■ このスレッドは過去ログ倉庫に格納されています