元スレ[PHP][フレームワーク]CodeIgniterスレ
php覧 / PC版 /みんなの評価 : ○
1 = :
公式:http://www.codeigniter.com/
チュートリアル:http://codeigniter.com/tutorials/
ユーザガイド日本語訳:http://ci-user-guide-ja.nought-point-999.net/
小回りの利くフレームワークの話題をひとつ!
2 = :
まさか建てられると思ってなかったんだ、だが後悔はしていない。
3 = :
乙!
4 = :
本スレに
CIにNet_URL_Mapper組み込んだ人いる?
どう手を付けたらいいのか迷うな
と書いたものだが
Routerクラスの_set_route_mappingメソッドを
オーバーライドするのが普通かな
あまりキレイではないが…
5 = :
Net_URL_Mapperって
/:module/:action/*
みたいな書き方できない?
なんだこの中途半端なルータは・・・
7 = :
"wild"て書かないといけなかったのか・・・サンクス
9 = :
わかんなかったらソース読むだろ普通。
>>7
wildという文字が大切じゃなくて、connectの第三引数 arrayでrule(s)が指定できるってこと。
connect(....../*(hoge),array('hoge'=>'*'));
13 = :
ciにオートローダ書こうと思ったら
どこに書く?
15 = :
前から思ってたがここのUser Guideのギミック
いまいちだよな・・・
凝りたいのは分かるがここは普通にした方がいい
18 = :
不必要なパラメータ付けたくらいでエラーにはならないじゃないの?多分
19 = :
なるよ
20 = :
エラーになるだろ。普通。
そんなことより自分の能力不足を「作者」のせいにするってのはやめたほうがいいな。
21 = :
試してみたけど、不必要な引数があっても、エラーは出ないね。
22 = :
もういいから巣に帰れ。
>php -v
PHP 4.4.6 (cli) (built: Mar 12 2007 10:11:11)
>php test.php
Warning: Wrong parameter count for class_exists() in 略 on line 6
>cat test.php
<?php
class ABC
{
function ABC(){;}
}
if(class_exists('ABC',TRUE)) {;}
?>
23 = :
自作の関数だと、引数の数が多くてもエラーでなかったんだけどな。
組み込みの関数だと、チェックしてるんだな。
24 = :
能力不足とは?
対応しようと思えばできるがそもそもの設計がおかしいだろ
25 = :
4と5両対応してんだから歪みでるのは当然
27 = :
>>23
将来の拡張もありうるんだから
パラメータ多すぎでエラー出すのはおかしいよな。
実際おかしなことになってるし。
28 = :
なんか必死だな
29 = :
いや引数が多い時にエラー出すのが悪いんじゃなくて
PHP5以降のclass_existsの拡張のデザインが失敗なんだ思うよ
だいたいclass_existsする時点でオートロードするなんて
ありがた迷惑以外のなにもんでもないだろう
PHP4とのcompatibility考慮したら第2引数省略した時は
何もしないでTRUEの場合にオートロードを試みるべきだった
FW本スレでもそういう話が出てたはず
30 = :
拡張クラス命名規則をちゃんとしとけばいいんだから、それは本質論じゃないな。
32 = :
でもそれ言ったらclass_existsだけじゃなくて、newもextendsもloadされていない場合
__autoloadを一旦見に行くじゃん。記述した未知のクラス名を見に行くのが悪いって
いってしまったら、newに、new(True) ClassNameとか「引数」実装しろって話しにもなるぜ。
33 = :
未知のクラス名を見に行くのが悪いんじゃなくて
class_existsを使う局面の意味合いを考えてみてよ
newやextendsで未知のクラスを使わないよう
未知のクラス名でないかどうか調べるためにclass_existsするわけでしょ
確実にクラスが存在するか書き手は保証を行うためにclass_existsする
なのにclass_existsのデフォルト(第2引数無し)が
autoloadを見に行くのはどう考えてもお節介でしょ
autoloadに期待しているなら書き手はclass_existsなんてしないはず
それこそnewやextendsをいきなりやってしまってautoloadに任せる
newやextendsにも引数実装しろなんて話にはならない
38 = :
「フレームワーク製作のこういう部分でしかまず見られないよね」って話なら、なおさらデフォルト引数の挙動に互換性を無くすメリットはないんじゃないか。
まあ今どきのフレームワーク作者ならspl_autoload()とか使うと思うけど。
39 = :
>>36
FW自体がautoloadを定義している事が前提ならば
また変わってくるが(CIはどうなんだっけ・・・)、
FW自体ではautoloadを利用せずユーザにautoloadの定義を
委ねている場合はそのFW作成側はclass_existsの引数に注意する必要が出てくる
理由は>>37の書いている通りFWを使う側のユーザが定義した
autoloadが勝手に呼ばれてしまう、ユーザが呼んで欲しくもなくても
で、これはFWに限らず__autoload()がユーザ側で自由に定義される以上、
ライブラリ側のコードではclass_existsを使う場合に
autoloadの事は常に意識せざるを得なくなる
となると第2引数はfalseにするしかない
そういう注意が必要になるってことがお節介の理由
で加えてclass_existsの第2引数をfalseにしちゃうと
PHP4ではwarningが出ちゃうから4/5の互換性の点でも問題だから
このclass_existsのデフォルトはよくないんじゃないかってこと
40 = :
うん、class_exists()拡張の際のデフォルト値は失敗だな。
仮に何か理由があろうとなかろうと、
あれのおかげで、__autoload()が絶妙に使いにくくなってしまった。
リリースしてしまったものは、今更しょうがないけど、
Zendクオリティに萎えたのは事実。
41 = :
PHP5使い→class_exists()に批判的
PHP4使い→class_exists()に擁護的
いろいろ語られてるが突き詰めればこれだけの違いじゃね
PHP5使っててclass_exists()の仕様を「これでいい」と思ってる奴は
かなりのマゾ野郎だけだろう
42 = :
なにを言ってるのか不明だな。
ver5と「class_exists拡張」とautoloadは同時なのに。
ver5ベースでやってる奴は、今の仕様でいいに決まってるじゃん。
44 = :
CIの実装にかかわることだからいいんだよ。ここで。
ちなみに、 5のみに特化したsymfonyの場合、grep |wc で単純計算すると
class_existsで引数falseつけてるのは12、つけてないのは32。前者は当然core関係、後者はvendor関係が多い
45 = :
>>42
お前の方が意味不明だっつの
てかclass_exists()擁護派は総じて論拠が柔すぎて反論する気すらおきん
対話自体にならないレベルだ。
まあ現実問題として改正が必要なんだからエリックに言ってやらないとな
英語に達者な奴頼む
46 = :
┐(´д`)┌
49 = :
俺はsubdirectory(method or class)/fileだな
50 = :
俺もクラスではディレクトリ分けてる
みんなの評価 : ○
類似してるかもしれないスレッド
- [PHP][フレームワーク]CodeIgniter Part2 (983) - [86%] - 2015/4/7 12:46
- 【PHP】フレームワークPharonスレ (306) - [60%] - 2022/10/10 20:00
- [PHPフレームワーク]Laravel (995) - [53%] - 2017/7/22 11:45
- 【PHP】PHPフレームワーク総合スレ14 (1001) - [50%] - 2010/12/11 10:32
- 【PHP】PHPフレームワーク総合スレ15 (989) - [50%] - 2013/9/27 6:00 △
- 【PHP】フレームワークMapleに舌鼓 (470) - [48%] - 2017/12/31 9:31
- 2ch有志がPHPフレームワークを作るスレ (81) - [45%] - 2019/5/9 7:46
トップメニューへ / →のくす牧場書庫について