【PHP】フレームワーク CakePHP 2ホール目
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん
2007/11/14(水) 02:50:28ID:???http://www.cakephp.org/
10分で作るCakePHPアプリ for Windows
http://p4life.jp/cake/
マニュアル日本語化
http://www.cakephp.jp/doc/
日本語フォーラム
http://cakephp.jp/modules/newbb/
あとこのへんとか(初心者向けTIPS)
http://www.avatarfinancial.com/pages/cake/
0828nobodyさん
2008/03/05(水) 15:21:35ID:???> たとえば、データベースの一行だけでなく、複数行をいっぺんに表形式で入力したい。
> ここまでは質問&答えがあったきがするけど、
> そのとき、どこか一行でもエラーがあれば全部保存しない(それはトランザクションで解決)
> で、入力エラーがあったフィールドの下にエラーメッセージを表示させる。
少なくともこれが出来たら、「既にあるもの」と認めてもいいけど?
0829nobodyさん
2008/03/05(水) 15:27:50ID:???この自作ヘルパーしなくても普通に出せるやん。
入力エラーがあったフィールドの下にエラーメッセージを表示させる。だろ?
0831nobodyさん
2008/03/05(水) 15:39:35ID:???文章が読めないのか、都合が悪い所を見ようとしないのか。
0833832
2008/03/05(水) 16:04:24ID:???複数行一括入力は俺も試したけどFormHelperつかえねーよな。
少しでも手を入れようと中身を見ると余計な機能ばっかり大量に付いてて振り払う手間の方がかかる。
粒度の感覚がないんだろうな。もっと乱暴に言うと、おもてなし精神がねえ。
わかるよね言いたいこと。
0834nobodyさん
2008/03/05(水) 16:12:26ID:???0835nobodyさん
2008/03/05(水) 16:18:08ID:???Helperの癖に、モデルに依存しまくりなんだよな。激しく意味がわからんし。
たとえば、FormHelper::createだけどこんなコードになっている。
$currentModelってなに? ClassRegistry::getObject($currentModel);ってなに?
ClassRegistryって何をするもの? レジストリってことは誰かがどこかでその名前で登録するわけ?
> is_a($currentObject, 'Model')
モデルかどうかって何でそんなの調べるの? って感じだからね。
0836nobodyさん
2008/03/05(水) 16:18:35ID:???$defaultModel = null;
$data = $this->fieldset;
$view =& ClassRegistry::getObject('view');
中略
if (empty($model) && $model !== false && !empty($this->params['models'])) {
$model = $this->params['models'][0];
$defaultModel = $this->params['models'][0];
} elseif (empty($model) && empty($this->params['models'])) {
$model = false;
} elseif (is_string($model) && (strpos($model, '/') !== false || strpos($model, '.') !== false)) {
$path = preg_split('/\/|\./', $model);
$model = $path[count($path) - 1];
}
中略
if (ClassRegistry::isKeySet($model)) {
$object =& ClassRegistry::getObject($model);
}
$models = ClassRegistry::keys();
foreach ($models as $currentModel) {
if (ClassRegistry::isKeySet($currentModel)) {
$currentObject =& ClassRegistry::getObject($currentModel);
if (is_a($currentObject, 'Model') && !empty($currentObject->validationErrors)) {
$this->validationErrors[Inflector::camelize($currentModel)] =& $currentObject->validationErrors;
}
}
}
0837nobodyさん
2008/03/05(水) 17:38:57ID:???モデルは乗ってるんだけど、コントローラーのやり方がいまいちわからない。
このスレに神がいたらブログにまとめてアップしてくれたらうれしいです。
・・・願ってます。
0838nobodyさん
2008/03/05(水) 18:30:03ID:???こいつが書く文章だけ、やけに読みにくい
データベースの一行だけでなく、複数行をいっぺんに表形式で入力したい
コミュニケーション能力無いやろ?
0840nobodyさん
2008/03/05(水) 18:58:46ID:???認証後の飛び先だけ自分でコントロールすればいいだけじゃねの?
認証後の飛び先を認証直前の画面に設定ぐらい楽勝
その程度でオレオレ的っていうのか、しらんが
0842nobodyさん
2008/03/05(水) 19:41:00ID:???この説明"すら"理解できないの?
0843nobodyさん
2008/03/05(水) 19:45:29ID:???0844nobodyさん
2008/03/05(水) 20:17:33ID:???理解が出来る出来ない問題じゃなくて例えが悪すぎるよな
こういやつの書くコードは、どういうコード書くかなんとなくわかる
自分にしかわからないコードしか書かないよな
0845nobodyさん
2008/03/05(水) 20:53:16ID:???認証にこけて認証ページにリダイレクトする前にurlをセッションに入れて
認証完了後にそのurlに飛ばせばいいだけじゃね
0846nobodyさん
2008/03/05(水) 21:02:22ID:???0847nobodyさん
2008/03/05(水) 22:44:19ID:???意味がわかんないのに、”できる”と断言しちゃうやつ。
こいつのほうがよっぽどアフォだろ。
0850nobodyさん
2008/03/06(木) 02:45:38ID:???理解能力とかより、わかりにくい文章でも度が過ぎるよな
特に>>820と>>823
普通のコミュニケーションでもよく聞き返されるやろ?
もっと簡単な文章にできないか?
密度の薄い内容のクセに長文になってんだよwww
0853nobodyさん
2008/03/06(木) 09:43:53ID:???勝手に同一人物にするなw
理解能力も無い、この程度の長文(?)も読めない、コミュニケーション能力も無い。
その上妄想で他人をあおることしかできない。
0854nobodyさん
2008/03/06(木) 09:54:29ID:???長文というか80%が駄文だし
そんな駄文を理解しようとする為に無駄なパワーを使いたくないから
もっと楽に読める内容の濃いわかりやすい文章にしろよ
0855nobodyさん
2008/03/06(木) 10:45:54ID:???YOUの部分を日本語に訳せばいいのかな。
個人的には、MVCの役割分担の考え方についてはフレームワーク自体の根深い部分だと思うから
他の人の話もききたかったりする。Cakeの実装の是非とか。
0856nobodyさん
2008/03/06(木) 11:06:31ID:???理解力が無いというより、単に実戦経験が無いのだろうな。
実戦経験があれば、表形式での入力とか、
セッションもモデルの一部じゃね?(という疑問)とか
そういうのは、これだけ書いてあっていても、あーあのことねって
わかると思うんだが。
0857nobodyさん
2008/03/06(木) 11:22:57ID:???> 誰か simpletest でコントローラをテストする方法教えてください。
コントローラのテストは少なくとも二つのやり方がある。
一つは、CakeTestCase::testAction($url, $params = array()) で
actionを呼ぶ方法。
もう一つはCakeTestCaseの代わりにCakeWebTestCaseを継承したテストクラスを作り
CakeTestCase::get(アドレス)、CakeTestCase::click、CakeTestCase::clickLinkById、
CakeTestCase::setFieldByName、CakeTestCase::clickSubmitById
CakeTestCase::assertPatternなどで、あたかもブラウザを操作しているかのごとく
ページを移動していきながらテストする方法。
> このスレに神がいたらブログにまとめてアップしてくれたらうれしいです。
まとめたいのは山々なんだが、時間が・・・。
0858nobodyさん
2008/03/06(木) 11:26:31ID:???普通のテストではテスト用のデータベース設定が使われるわけだが
(つまりtest_suite_というプリフィックスがついたテーブルを使用する)
CakeWebTestCaseはブラウザでアクセスしていることになるので、
テスト用のデータベース設定が使われない。
これじゃいろいろまずいので↓ここの記事ではCookieを設定することで対応している。
http://gignus.com/blog/posts/view/13
一方俺は、CakeWebTestCase::addHeader を利用した。
0859nobodyさん
2008/03/06(木) 15:18:52ID:???>>858
おぉ〜!神様、仏様。
ありがとうございます。
simpletestじゃなさそうですが、コントローラーはsimpletest でテストできないってことでOKでしょうか。
cakewebtestcase 見てみます!ありがとう。
0860nobodyさん
2008/03/06(木) 17:08:09ID:???駄文が多いだけで、意味のあることがひとつも書いてない
あとは自作ヘルパーの自慢?
悪いけどオナニー的な文章になってるんだよ
気づいてない?
>>856
自演乙
0861nobodyさん
2008/03/06(木) 17:14:50ID:???だろう運転と会話は事故の元
誰もが自分と同じ思考をし理解してくれるなんてありえない。
しまいには相手を馬鹿にして切り捨てる。
個別の技術的な話っていうより、文章の分かりにくさと対応がつっこまれてるんだと思うよ。
0862nobodyさん
2008/03/06(木) 17:21:49ID:???どう考えても他の人の話を聞く姿勢ではないよな!
攻撃的な姿勢でどうやって有意義な情報を聞き出すことが出来るんだよ
0863nobodyさん
2008/03/06(木) 17:30:26ID:???脳障害患者とかな!
一言で言えば嵐に近い。
最近は>>777が常駐して荒らしてるだけだから
0865nobodyさん
2008/03/06(木) 18:00:39ID:???simpletestだよ。
というか、まさかと思うけど、CakePHPはsimpletestに対応していて
simpletestをvendorだっけ?にインストールして、
/test.php にアクセスするとテスト環境になるってこと知らないとか?
1.2の話だけど、1.1でも同じじゃなかったかな?
で、simpletestにはブラウザのようにアクセスするWebTestCaseってのがついている。
CakePHPはそれを継承してCakeWebTestCaseにしているだけ。
0867nobodyさん
2008/03/06(木) 19:28:46ID:???0868nobodyさん
2008/03/06(木) 21:33:38ID:???ありがとうございます。simpletest なのですね。
test.php でアクセスするとできるのも見ました。
勉強します。ありがとうございます!
0869nobodyさん
2008/03/06(木) 22:57:57ID:???└857 >>837 > 誰か simpletest でコントローラをテストする方法教えてください。 コ...
└859 >>857 >>858 おぉ〜!神様、仏様。 ありがとうございます。 simpletestじ...
└865 >>859 simpletestだよ。 というか、まさかと思うけど、CakePHPはsimpletes...
└868 >>865 ありがとうございます。simpletest なのですね。 test.php でア...
テストの仕方ってあんまり情報無いよね。
どこかにまとまってないのだろうか。
0871nobodyさん
2008/03/07(金) 13:19:14ID:TbKF7E3aWindows & cake1.2 です。
app/config/bootstrap.phpに下記のような記述をしました。
$myDefines['aaa']['bbb'] = array(
'a' => 'あ',
'b' => 'びー',
);
これをビューやコントローラーで使用したいのですがどうすれば。。
現状、pr( $myDefines); とかやると定義されてないよnoticeエラーがでる。
0872nobodyさん
2008/03/07(金) 14:59:15ID:???教えて頂いたお礼に 頑張ってまとめてアップしてみたいと思います。
CakeWebTestCase ← これいいっすね。
0874871
2008/03/07(金) 16:43:55ID:???function temp(
return $myDefines['aaa']['bbb'] = array(
'a' => 'あ',
'b' => 'びー',
);
);
0876871
2008/03/07(金) 18:59:05ID:???うへぇ
enum型の表示名とかがおもです。
define使えば問題なく使えるんですが、配列で欲しいわけです。
globalなんてしたくないし・・・。
ダメですかねーん?
0877875
2008/03/07(金) 19:48:19ID:???言った本人が言うのもなんだけど、どうなんだろう?
どうも最近そういうグローバルな値なんて使わないもので、
enum型もほしいと思ったことが無いんだよな。
そういうのは大体クラス内部で収まっているし。
設定ファイルに書いて、必要な箇所(関数の頭かクラスのコンストラクタ)で
読み込むことが多いし。でも確かに少量ならbootstrapに書いたほうがいい気もする。
なんだろう。このもやもや。
0878nobodyさん
2008/03/07(金) 20:35:01ID:???0881nobodyさん
2008/03/08(土) 16:58:13ID:???http://book.cakephp.org/view/39/configuration
0883nobodyさん
2008/03/09(日) 07:54:39ID:???グローバルな値はCakePHPがデェフォでかなり埋め込んでるけどな
グローバルを全く使わないって発想はCakePHPを否定してるよな
0884nobodyさん
2008/03/09(日) 08:01:58ID:???おまいらのクラス定義は全部グローバルやんwww
CakePHPは名前空間を使ってないグローバルなフレームワークやんwww
なにを今さらグローバル気にしてんねん
0885nobodyさん
2008/03/09(日) 08:24:21ID:???こんなグローバル指向なフレームワーク使うんやったら
自分でフレームワーク作った方がマシやろ
0886nobodyさん
2008/03/09(日) 10:41:20ID:???クローバスクラス定義は普通のもの。
0887nobodyさん
2008/03/09(日) 19:37:33ID:???全く無いのもダメだろ要はバランス
CakePHPのような最初から骨組みが決定してるものは
仕様方針と骨組みが多少異なれば
はみだしたこともしないといけない
0888nobodyさん
2008/03/09(日) 19:42:05ID:???要はスクリプト言語のメリットを活かし
プログラム言語のような複雑化を避けるため
グローバルを気にして設計するなら
Javaとかに移るべき
PHPはグローバルを使うことでメリットのある言語
0889nobodyさん
2008/03/09(日) 19:45:41ID:???それなのにRailsの影響でフレームワーク化してるけど
PHPの方が全く追いついてない状態
0890nobodyさん
2008/03/09(日) 19:51:46ID:???global ってキーワードを使った記憶がないんだが?
0891nobodyさん
2008/03/09(日) 20:04:12ID:???グローバル変数なくても作れるね。
0892nobodyさん
2008/03/09(日) 20:08:55ID:???なぜならPHP自体がしっかりしてないんだから
グローバル変数使いまくりの方がPHPにはメリットがある
Railsのマネするなら
Rubyみたいにしっかりとしたオブジェクト指向言語じゃないと
0893nobodyさん
2008/03/09(日) 20:32:06ID:???小さい掲示板つくるだけで、こんなに余計なグローバル変数定義されるのかよ
0894nobodyさん
2008/03/09(日) 20:48:54ID:???symfonyなんて律儀に使った変数をunsetしていくのにwww
0895nobodyさん
2008/03/09(日) 21:00:06ID:???0896nobodyさん
2008/03/09(日) 21:20:15ID:???0897nobodyさん
2008/03/09(日) 21:21:07ID:???お前、PHP知らないだろ?w
PHPではグローバル変数を使うときには、
global って書かないといけないんだよ。
だから使っていて、知らないということはありえない。
CakePHPでは、globalを使わなくて作れるのは事実。
0898nobodyさん
2008/03/09(日) 21:27:54ID:???一箇所しか、使っていなかったな。
その一箇所も、ADODB用のデータベースライブラリで
ADODBの動作モードを変更するためのだけのコード。
0900nobodyさん
2008/03/09(日) 21:57:23ID:???0901nobodyさん
2008/03/09(日) 22:00:31ID:???0902nobodyさん
2008/03/09(日) 22:02:01ID:???グローバル変数
変数にはスコープと呼ばれる有効範囲があります。
スコープの最も外側の部分、 スクリプト中でどの関数にも含まれていない部分で
定義された変数をグローバ ル変数とよびます。
0904nobodyさん
2008/03/09(日) 22:04:30ID:???たとえば、コントローラクラスなどの
<?php
class XXXController extends AppController {
}
?>
の<?php と classの間とか。
まあ、普通はこんなところに、書かないよね?
0907nobodyさん
2008/03/09(日) 22:08:05ID:???どこか間違っているか?
CakePHPでは、作るコードのほぼすべてを
クラスとしてつくり、普通の作り方をすると、
グローバル変数なんか使わないだろ?
0909nobodyさん
2008/03/09(日) 22:21:11ID:???global 変数名 ってしないと参照できないって仕様、
最初はウザイと思っていたが、グローバル変数使わなくなってからは
どうでもよくなったな。これもCakePHPのおかげかな?
0911nobodyさん
2008/03/09(日) 22:37:41ID:???変数宣言してる行数
2000行見つけたんですが!
ちなみに変数名は
$config
これって各クラスでグローバル参照できる変数だよね
0912nobodyさん
2008/03/09(日) 22:38:56ID:???CakePHPというオブジェクト指向のフレームワークのおかげで、
クラスを使ってコアのクラスを継承して実装することが求められ、
必要な値が、クラス変数に格納されるから、しっかりした作り方ができる。
0913nobodyさん
2008/03/09(日) 22:40:31ID:???変数名でグローバルかどうかなんてわかるはずないだろw
それがどのファイルに定義されていたのか
なぜ、それをいえない?
0914nobodyさん
2008/03/09(日) 22:45:26ID:???「変数宣言している行数2000行、その変数名は$config」の時点で
嘘だとばれるだろ。常識で考えて。
0915nobodyさん
2008/03/09(日) 22:51:21ID:???恐ろしいほどスコープに括られてない変数(グローバル変数?)がある
0917nobodyさん
2008/03/09(日) 22:59:32ID:???簡単に言うと、このようにローカル変数として展開されている。
class ??? {
function ??? () {
include(そのファイル)
}
}
一見、ファイルだけを見て、それがクラスの中にないからといって、
それがグローバル変数だとは限らないんですよ。
アフォが自滅して終わりです。ちゃんちゃん。
0919nobodyさん
2008/03/09(日) 23:03:54ID:???0920nobodyさん
2008/03/09(日) 23:11:12ID:???これはクラス外で宣言してるのは何で?
0921nobodyさん
2008/03/09(日) 23:15:12ID:???0922nobodyさん
2008/03/09(日) 23:15:16ID:???そのファイルも、ほかのクラスの関数から
読み込まれているからローカル変数になっている。
それがグローバル変数だと思ったら、どこかの関数で
global その変数名; って書いて、実際にその変数を参照できるか調べろよ。
(別に関数じゃなくても、変数定義されている、そのファイル自身と
そのファイルの呼び出し元関数以外ならどこでもいいが)
できないからさ。
0924nobodyさん
2008/03/09(日) 23:24:41ID:???クラス定義されてるファイルを
クラスから呼び出すということは
クラス内でクラスを作るということになるんだが?
a.inc
<?php
$a="a";
class A{
}
?>
class A {
include "a.inc";
}
0925nobodyさん
2008/03/09(日) 23:28:52ID:???i18n.phpのvar $tasks = array('DbConfig', 'Extract');変数設定により、
フレームワークから読み込まれていますが?
0926nobodyさん
2008/03/09(日) 23:34:25ID:???globalキーワードがついていない、変数定義は
ほぼすべて、グローバル変数ではないと思っていい。
フロントコントローラとは、要するに、どのアドレスでアクセスしても、
まず最初に、index.php といった決まった、phpスクリプトが呼ばれる。
そこからユーザーが作ったコードは、関数の中から呼び出された関数の
そのまた中の関数から呼ばれた関数の・・・といくつかの関数(当然メソッド含む)を経て実行される。
つまり、ほとんどが、関数内に読み込まれるファイルとして成り立っているので、
その関数内スコープで、グローバル変数を定義するには、globalキーワードが必要不可欠。
globalキーワードを使わずに、グローバル変数を作るには、どの関数からも呼ばれていない
index.php ぐらいで定義するしかない。
レス数が900を超えています。1000を超えると表示できなくなるよ。