トップページ⇒php
985コメント270KB

【PHP】フレームワークについて語るスレ13【総合】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/03/24(火) 01:21:08ID:???
PHPのフレームワークに関する話題用のスレッド

●国外産●
symfony
 ttp://www.symfony-project.com/
code igniter
 ttp://codeigniter.com/
Zend Framework
 ttp://framework.zend.com/manual/ja/index.html
CakePHP
 ttp://www.cakephp.org/
Yii Framework ←New!! (Dec 03, 2008)
 ttp://www.yiiframework.com/

●国産
ちいたん
 ttp://php.cheetan.net/
Ethna
 ttp://ethna.jp/
guesswork
 ttp://classic.guesswork.jp/
maple
 ttp://kunit.jp/maple/

●前スレ
【PHP】フレームワークについて語るスレ12【総合】
http://pc11.2ch.net/test/read.cgi/php/1229960175/
0331nobodyさん2009/08/18(火) 21:19:02ID:???
つーかPHP使わなきゃいいんじゃね?
0332nobodyさん2009/08/18(火) 21:22:22ID:???
そもそもの発端が、>>279 の
型指定の中途半端さに対する指摘だったのに、
なぜ型指定自体の論争になるのか理解出来ない。

出来るに越した事は無いし、PHP以外を使えとかどんだけ盲目信者なんだと。
>>330とか本気でそう思ってるならプログラマ辞めた方がいい。
0333nobodyさん2009/08/18(火) 21:35:48ID:???
いやだってPHPは文字列も整数も同じように扱えたほうが便利だよねってとこから
言語思想がスタートしてるんだから自分がPHPを選んだ上でそれを言うのは非常にナンセンスかと
0334nobodyさん2009/08/18(火) 21:44:21ID:???
入力も出力も文字列だしな
いちいち内部で変換するとかC/C++で嫌なほど苦労した
0335nobodyさん2009/08/18(火) 21:48:46ID:???
自分でextention書けばいいだけ
PHPの型指定に文句言うのは小学生までだよねキャハハキモーイ
0336nobodyさん2009/08/18(火) 21:59:41ID:???
checkdate()は$_POSTデータ直で渡したら転けた。
微妙にintオンリーとかあるよね。
0337nobodyさん2009/08/18(火) 22:44:33ID:???
>>333
PHP5でOOPよりに思想が変化したじゃん。
引数として型指定出来るようになって、
それはPHPの良さを保ちつつ、必要な箇所は堅牢に出来るってイメージだったんだけど、
stringとかintを型指定出来ない理由が不明なんだよね。


気持ち悪いとは思わないのかなと。
0338nobodyさん2009/08/18(火) 22:48:16ID:???
>>333
>PHPは文字列も整数も同じように扱えたほうが便利だよねってとこから
>言語思想がスタートしてる

初耳だ
ソースは?
0339nobodyさん2009/08/18(火) 23:15:59ID:???
クラスタイプヒンティングだけで十分だけど
0340nobodyさん2009/08/18(火) 23:21:21ID:???
>>339

初耳だ
ソースは?
0341nobodyさん2009/08/18(火) 23:41:38ID:???
ダックタイピングはむしろ美徳だろ
原始人乙としか言いようがない
0342nobodyさん2009/08/18(火) 23:44:31ID:???
誰もダックタイピングの話なぞしていない
0343nobodyさん2009/08/18(火) 23:48:57ID:???
stringやintを型指定できるようにするくらい
コスト的には何でもないように思えるが、しない理由は何なのだろうか?
ユダヤ教徒の宗教上の理由か?
0344nobodyさん2009/08/18(火) 23:55:18ID:???
存在しないクラスStringでタイプヒンティングして
出たエラーをハンドリングして判定したらいいんじゃね?
0345nobodyさん2009/08/18(火) 23:56:17ID:???
is_string / is_int とかあるんだから内部的には型情報持ってる気がするんだけどね。

ネームスペースのバックスラッシュもそうだけど、
何らかの矛盾が生じる実装になっちゃってて技術的に難しいのかもね。
0346nobodyさん2009/08/19(水) 00:03:44ID:???
>>344
そんな面倒な事するなら普通に型チェックするコード書く方が早くね・・・?

あとStringクラスが実在したらどーすんのw
0347nobodyさん2009/08/19(水) 00:05:41ID:???
どんな型であれ受け取れるのが前提にあるとかそんな感じなんじゃないの
一般的な意味でのオーバーロードもできないんだし

まぁ型チェック程度なら一度値書きゃ使いまわせるし
必ず値がこれだってわかってるなら決め打ってチェックかけなくてもいいしな
例外?しるか、みたいないい加減な実装で、使える値はリファレンス見るか察してくれ
ってのがPHPなんだと思ってる
0348nobodyさん2009/08/19(水) 02:11:50ID:???
そりゃPHPが初心者向けに作られた言語だからだよ。Perlがuse strictを実質的に強制するようになって、一気にユーザが減った。
0349nobodyさん2009/08/19(水) 13:16:10ID:???
>>337
実装することは可能ではあるがPHPでそれをやっても価値がないということ
POSTから文字列で渡ってくる通し番号のためにString→Int変換してから関数に渡すなんてのはもう古い
0350nobodyさん2009/08/19(水) 15:55:22ID:???
気持ち悪い

根拠が薄い時に使われる事が多い
0351nobodyさん2009/08/19(水) 18:18:58ID:???
>>349
論点ずれすぎ。
クラスタイプヒンティング自体が実装されている以上、意味が無いという事は無い。

あと例えが頭悪すぎかつ意味不明。
そんな用途しか思いつかない君には意味が無いのかもしれないな・・・
0352nobodyさん2009/08/19(水) 19:10:50ID:???
>>351
こんな所で他人に「頭悪い」とか言ってる暇があったら
頭良いお前が気に入るようにPHPの言語仕様に実装しちゃえば
いいと思うけど〜
0353nobodyさん2009/08/19(水) 19:12:04ID:???
すごい言い様だな
0354nobodyさん2009/08/19(水) 19:24:39ID:???
>>349
え?POSTから数値を受け取りたい場合、普通は型チェックしてintに変換するよね?
0355nobodyさん2009/08/19(水) 19:47:41ID:???
HTTPは数値も全て文字列で渡されるからなぁ。

これがC言語であっても、結局は文字列から数値に変換する必要があるわけだ。
手間は何も変わらない。
0356nobodyさん2009/08/19(水) 19:50:18ID:???
>>349
それ違う話。難しい話してごめんな。

>>352
オマエモナー
0357nobodyさん2009/08/19(水) 19:51:38ID:???
あーだこーだ言う前にここ二ヶ月くらいのinternal読んどけ。
0358nobodyさん2009/08/19(水) 20:21:23ID:???
型指定否定派はプログラマとしての能力(デバッグ力)が低そうなイメージだな・・・

・privateとかいらないよね!
・interfaceとか何につかうの?w
・abstract?面倒なだけじゃんw
・そもそもclass化すると速度遅くなるし!
・テンプレートエンジン?いらねw PHP自体がテンプレートエンジンだからw
0359nobodyさん2009/08/19(水) 20:24:49ID:???
残念だがそれらは型指定とは関係ない
0360nobodyさん2009/08/19(水) 20:26:51ID:???
あくまでイメージだよ・・・使いこなせないから不要って人がPHP使いには多い気がする
で、他の言語もかじってる人がツッコミを入れると袋だたきにされる・・・と。
0361nobodyさん2009/08/19(水) 20:38:22ID:???
最初に触った言語がPHPの人ってかわいそうだよね。
その後もプログラマーとして成長できなさそう。
0362nobodyさん2009/08/19(水) 20:53:47ID:???
自分がついていけないから、言語の進化を否定している感じだよね
無名関数とかネームスペースとか、浸透しなさそうだなぁ
0363nobodyさん2009/08/19(水) 21:13:37ID:sk0qCFj1
むしろ型指定にうるさいだけの奴の方が初心者くせー
分かりきってること言ってるだけだし
代替案示されてもふてくされる
ただの馬鹿ですね分かります
0364nobodyさん2009/08/19(水) 21:36:16ID:???
コード内で型チェックして例外投げるのが面倒だから、
組み込み型もタイプヒンティングしたいって話じゃないの?

代替え案なんてあったっけ・・・?
0365nobodyさん2009/08/19(水) 21:43:58ID:???
// 型指定あり
function hoge(string $str, int $int, boolean $bool)
{
}

// 型指定無し
function hoge($str, $int, $bool)
{
if (!is_string($str)) new throw InvalidArgumentException();
if (!is_int($int)) new throw InvalidArgumentException();
if (!is_bool($bool)) new throw InvalidArgumentException();
}
0366nobodyさん2009/08/19(水) 21:54:42ID:???
オプションとしてあっても誰も困らないんだから
あった方がいいのは疑問の余地がねーんだよ
ただ文句言ってるだけなのが頭悪い
0367nobodyさん2009/08/19(水) 22:00:29ID:???
PHPのマニュアルでは、型指定も戻り値指定もあるんだよねぇ・・・

PHPDocで同様のマニュアルを出力したいんだけど、
現状では@paramに型までキッチリ書かないといけないから面倒すぎる。
0368nobodyさん2009/08/19(水) 22:06:59ID:???
型指定マンセー派は、コーディングのときなんかに、決められた型しか渡せないのがわかるから、
バグを作りこむ可能性が少ない、とか、自分が書くメソッドでチェックしなくてすむから便利つってて、
チェック処理でいいだろ派は、渡される値の型がわからないものを処理する場合
メソッド内でチェックするか外でチェックするかの違いしかないから、
結局チェックかませりゃいいだけじゃん
つってる
そこらへんをお互いが理解してないのか知らんけど、話かみ合ってねーだろw

つか、指定できれば便利、ってのはみんなわかってるだろう
でもぐだぐだ不満垂れようが、結局いまのPHPじゃできないんだから
ここで愚痴るのも馬鹿な話というかお門違い。フレームワークにも関係ねーし

だいたいそういうのはPHPを使うと決めた時点で割り切るべき機能だと思うけどな
型指定できない仕様が向いてないもの作るなら、まずPHPを選択肢から除外するべきじゃ
0369nobodyさん2009/08/19(水) 22:11:17ID:???
>>368
最後の2行が余計だな。
スレ違かもしれんが、PHP5以降に対する要望としてはお門違いでも無いし、
嫌なら他の言語使えってのは極論過ぎる。
0370nobodyさん2009/08/19(水) 22:23:43ID:???
お門違いだよ
0371nobodyさん2009/08/19(水) 22:27:23ID:???
お門違いじゃないよ
0372nobodyさん2009/08/19(水) 22:27:48ID:???
理由を言えよ、たこ助野郎
0373nobodyさん2009/08/19(水) 22:30:50ID:???
みんなで芋堀りすればいいんじゃね?
0374nobodyさん2009/08/19(水) 22:34:53ID:???
タイプヒンティング
http://php.benscom.com/manual/ja/language.oop5.typehinting.php
0375nobodyさん2009/08/19(水) 22:36:05ID:???
落ちて久しいPHP総合スレたててそっちでやれw
0376nobodyさん2009/08/19(水) 22:40:49ID:???
>>369
お前がいやだと思ってることはもう十二分にわかったから、日記帳にでも書いてろw
0377nobodyさん2009/08/20(木) 09:41:50ID:???
ちょっと質問なのだけど、
2〜3枚の軽いけど、DBを一応使う。みたいな要件の時FW使うまでもないかなと考えてるのですが、
そういう時皆はどうやって作ってますか?
規模に関係なくFW使ってる?
それとも、pdoとか使ってべた書き?
0378nobodyさん2009/08/20(木) 12:55:48ID:???
>>377
俺個人でやるならベタで書くな。その方が軽いし管理も楽だ。
仕事でやるなら周りのシステムに合わせておく。
0379nobodyさん2009/08/20(木) 16:29:50ID:???
>>355
ああ、それは大きいな。しょせんHTTP(というかHTML)には限界がある。
try {
int $num = $_REQUEST['age'];
} catch (Exception $e) {
die("age is not number");
}
こういうのがベスト。連想配列とかオブジェクトを直接REQUEST出来たり名。
0380nobodyさん2009/08/20(木) 17:23:29ID:???
>>379
なにそのコードこわい。

HTTPの限界?そもそも型を保証するようなプロトコルじゃないだろう。
0381nobodyさん2009/08/20(木) 18:26:24ID:???
phpとかhttpとか限界じゃなくて仕様と割り切るのが精神衛生上いいし、そういうもんじゃないのか
0382nobodyさん2009/08/20(木) 20:18:13ID:???
>>378
レスどうもありがとうございます。

コピーしてちょっと設置とか取り回しが面倒だし、
propelだけ入れるってのも手間かけるメリット薄いので、躊躇してました。
0383nobodyさん2009/08/20(木) 20:28:03ID:???
コツコツと自前の関数郡作ってる
そして会社には絶対に持っていかない
0384nobodyさん2009/08/20(木) 20:55:07ID:???
>>379
小さいプロジェクトはいいな。
0385nobodyさん2009/08/20(木) 21:10:24ID:???
>>379 のコードが理解出来ないのは俺だけか
0386nobodyさん2009/08/20(木) 21:39:30ID:???
Integer型の $num に Integer 以外の型で値が渡ってきたら
おかしいことなので例外が発生。
そのとき「値がおかしいぜ!」ってダイイングメッセージ残して
phpが死ぬって意味だろ。

しかしせめて
int $num = Integer.parseInt($_REQUEST['age']);
とかだろ。
0387nobodyさん2009/08/20(木) 22:03:58ID:???
例外の使い方が不適切なような・・
0388nobodyさん2009/08/20(木) 22:11:25ID:???
想定外の値が来たからキャストエラーだろ?
何か問題でも?
0389nobodyさん2009/08/20(木) 23:16:59ID:???
PHPの無茶キャストっぷりを考えたら意図した通りに動くとは思えないがw


そもそも、それはPHPのコードなのか?
0390nobodyさん2009/08/20(木) 23:42:04ID:???
論争

静的および強い型付けの支持者と動的および自由な型付けの支持者の間では衝突が度々おきる。
前者のグループは厳密な型付けの使用によって、処理系がより多くのエラーを
問題が大きくなる前に発見できるようになると主張している。
後者のグループはより気軽な型付けによってコードはよりシンプルなものになり、
そのようなコードは解析しやすいとされるので、エラーは減少すると主張している。
型推論がある言語では型を手で宣言する必要はほとんどないので、強い型付けに伴う開発のオーバーヘッドは低減される。

個人がどのグループに分かれるかは、開発しているソフトウェアの種類やチームのメンバーの能力、
他のシステムとの対話性の度合い、開発チームの規模などに依ることが多い。
少人数で小回りのきくプロジェクトには気軽な型付けがより合い、フォーマルで大人数で仕事が分断されている
(プログラマ、アナリスト、テスト部隊、など)プロジェクトは厳密な型付けのほうがうまくいくことが多い、と結論づける者もいる。
0391nobodyさん2009/08/20(木) 23:51:57ID:???
一般に動的な型付けを持つ言語では型の特性に合わせた最適化(例えば常に浮動小数点レジスタを用いるなど)ができないので、
実行速度という面では静的型に劣ると考えられている。反面多態性や記述の容易さで動的型は融通が利き、
Smalltalkなどのオブジェクト指向言語、スクリプト言語は動的型を採用するケースが多い。

動的型と静的型のどちらが安全なプログラムを記述できるのかは長年論争の的であるが、
双方とも適した問題領域、適した開発スタイルが存在し、異なった安全観念を持つ点を理解しなければならない

通常、静的型付けはオペレーティングシステムやシステムプログラムのような大規模で厳密性が要求される領域に適合するといわれている。
反面最初の型定義を誤ると一部分の影響が全体に波及すること、また柔軟性に乏しくわずかな変換に手間のかかる経路を用意したり
同じような機能を型別に実装しなければならないことなど、いわばお役所仕事的な煩雑さを伴うという弱点を持つ。
(なお近年の研究により静的型付けの言語も文脈から型を推論する型推論能力を持つなど簡略化の方向へ向かってはいる)

一方動的型付けの言語ではそもそも対象に特定の構造を期待しないため変更への対応は柔軟である。
特に配列、辞書、集合といったコレクションの利便性が顕著で、そのため近年いわゆるスクリプト言語は多くが動的型付けを採用している。
動的型付けの難点である最適化の弱さは、コンピューターの能力が増すことで相対的に小さな問題になっており、
スクリプト言語を中心に今後も動的型付けは発展するものと思われる。

0392nobodyさん2009/08/20(木) 23:55:54ID:???
実行パフォーマンスには期待していない。
部分的に強い型付けが出来る程度がPHPの理想系な気がする。
0393nobodyさん2009/08/20(木) 23:58:39ID:???
おまえらにscalaを紹介するよ
0394nobodyさん2009/08/21(金) 00:09:49ID:???
どんなに言語が簡単で優れていても、
ライブラリが揃ってない時点でPHPerは移行しないだろ。

なぜなら自前で実装する知識が無いから。
フォームデータのパースすら出来ない人がほとんどなんじゃない?
0395nobodyさん2009/08/21(金) 00:12:22ID:???
つーまーりー?
0396nobodyさん2009/08/21(金) 00:25:19ID:???
仕事で使う言語を自由に選べたらこんなスレにいねーよ
0397nobodyさん2009/08/21(金) 00:28:39ID:???
まったくだな
0398nobodyさん2009/08/21(金) 00:30:56ID:???
だーけーどー?
0399nobodyさん2009/08/21(金) 01:28:55ID:???
>>377
俺は自作のフレームワークもどきを使っているよ。
最小でPHPファイル1つで完結する。
フレームワークというより、ファイルの置き方を決めた程度だけどな。

PHPを使わないでベタで書いたものから
簡単に移行できる設計になっているから、
ベタでかいていたけど、PHPファイルが数枚になって
ディレクトリ構造とか考え出したときに、すぐに変更できる。
0400nobodyさん2009/08/21(金) 01:45:00ID:???
それを今すぐ公開しろ。今すぐだ
0401nobodyさん2009/08/21(金) 02:00:22ID:???
>>399
CakePHPスレで見た希ガスwww
http://pc11.2ch.net/test/read.cgi/php/1236563737/617
0402nobodyさん2009/08/21(金) 02:28:35ID:???
さすがだな。スネーク
0403nobodyさん2009/08/21(金) 03:10:01ID:???
それフレームワークとは言わなくね
0404nobodyさん2009/08/21(金) 05:33:23ID:???
>>377
もう、ちいたん+pdoでええやん
0405nobodyさん2009/08/21(金) 12:24:36ID:???
Agavi による MVC プログラミング入門
http://www.ibm.com/developerworks/jp/xml/library/x-agavipt1/?ca=drs-jp

何故か今agaviが!
0406nobodyさん2009/08/21(金) 16:00:04ID:???
var_dump(strpos(100, 10));
var_dump(strpos(100, '10'));

何で結果が違ってくるの?
0407nobodyさん2009/08/21(金) 16:29:35ID:???
>>406
マニュアル見ろよw
0408nobodyさん2009/08/21(金) 17:15:19ID:???
>>407
型のことなんてどこに書いてあるの?
0409nobodyさん2009/08/21(金) 17:34:09ID:???
>>408
ttp://jp.php.net/manual/ja/function.strpos.php

> needle が文字列でない場合は、 それを整数に変換し、
> その番号に対応する文字として扱います。
0410nobodyさん2009/08/23(日) 14:47:30ID:???
php 5.3 で、HTML中の <?=$val> のような変数表示に関して、仕様変更ありました?
0411nobodyさん2009/08/23(日) 15:53:07ID:???
うん
0412nobodyさん2009/08/23(日) 15:53:16ID:???
php 5.3じゃなくても <?=$val> は構文エラーになると思うけど。
0413nobodyさん2009/08/24(月) 02:01:45ID:???
short_open_tag=Onにすれば、構文エラーじゃないと思ったが、
よく見たら<?=$val ?>じゃないのね。
そりゃ構文エラーだわ。
0414nobodyさん2009/08/24(月) 09:11:24ID:???
>>413
ありがとう。short_open_tag スイッチですね。
0415nobodyさん2009/08/24(月) 12:42:48ID:???
short_open_tag使わない奴はただの暇人
キー打つ時間がもったいねーだろ
0416nobodyさん2009/08/24(月) 14:52:54ID:???
そうかそうか
0417nobodyさん2009/08/24(月) 15:10:12ID:???
>>416
いや、ユダヤだと思うよ
0418nobodyさん2009/08/25(火) 00:20:28ID:???
ははっ ワロス
0419nobodyさん2009/08/25(火) 13:33:43ID:amBbmp7F
>>415
補完を知らない暇人乙
0420nobodyさん2009/08/25(火) 16:12:34ID:???
>>399

俺も自作って言うか、ZendFWを自分の使い易いようにラッパーした物使ってる。
つうかZendFWが予想以上に出来る子だった。
0421nobodyさん2009/08/25(火) 17:23:39ID:???
>>419

<?=$val?>
<?php echo $val ?>
補完でどうにかなるもんなの?
0422nobodyさん2009/08/25(火) 17:36:36ID:???
>>420
やぁ俺。だが現実的にphp4の環境で動いているところが多くて、結局自前ラッパーフレームワーク互換の
php4用自前フレームワークもどきを作って2つをメンテナンスしていく羽目になって泣いている。えーん。
0423nobodyさん2009/08/25(火) 18:57:14ID:???
PHPとはちょっと関係ないんだけど、HTTP Status コードについて相談したいことがあります。
フォーム入力のバリデーションをしてエラーがあった場合、HTTP Response のステータスコードは何にすればいいでしょうか。
今までは特に指定してなかったので、結果として 200 OK を使っていたわけですが、
今度から Ajax 用のAPIを用意することになり、フォーム入力にエラーがあるかどうかを
HTTP Response のステータスコードで表すことになりました。
しかしどのステータスコードを使っていいのかよくわかりません。

フォーム入力にエラーがあることを表すにはどのステータスコードが適切でしょうか。
このスレはレベルの高い人が多いようなので、アドバイスをよろしくお願いします。
0424nobodyさん2009/08/25(火) 19:42:58ID:???
全く持ってすれ違い
そもそも用途が違う

ページリクエストに対して返すもので、コンテンツのエラーは管轄外
0425nobodyさん2009/08/25(火) 20:10:47ID:???
>>423
通信自体は成功しているから200にしておくべき
XMLかJSONかわからないけど、status項目等を追加してシステム独自のエラーコードなりエラーメッセージで判断するのが普通と思われる。
0426nobodyさん2009/08/25(火) 20:33:19ID:???
>>421

補完云々以前に
> <?=$val?>
> <?php echo $val ?>

こういうコーディングする時点で終わってる。
0427nobodyさん2009/08/25(火) 21:18:26ID:???
>>426

コーディング云々以前に
PHP使ってる時点で終わってる。
0428nobodyさん2009/08/25(火) 21:28:37ID:???
2ch使ってる時点で終わってる
0429nobodyさん2009/08/25(火) 21:54:16ID:???
>>425
通信自体は成功しているから200にしておくべき

これは無いだろう
0430nobodyさん2009/08/25(火) 21:59:54ID:???
うむ
■ このスレッドは過去ログ倉庫に格納されています