cakephpの基礎的な質問です。

コントローラーでidをパラメータにする場合、下記のような記述になるとチュートリアルにあります。
function edit($id = null)
セキュリティ的な理由で、function edit($id)にしないのだと思いますが、どのような理由かご教授ください。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/10/25 13:22:25
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:krese No.1

回答回数20ベストアンサー獲得回数4

ポイント35pt

こちらのチュートリアルでよろしかったでしょうか。

http://book.cakephp.org/ja/view/340/%E6%8A%95%E7%A8%BF%E8%A8%98%...

ひとつ注意: CakePHPは、'id'フィールドがデータ配列の中に存在している場合は、モデルを編集しているのだと判断します。もし、'id'がなければ、(addのビューを復習してください。)save()が呼び出された時、Cakeは新しいモデルの挿入だと判断します。

と書かれているように、addをeditに兼ね合いさせているだけだと思います。

2つあると冗長になるからでしょうか。(ただその場合、チュートリアルのだとメッセージが適当ではない気もしますが・・・)


別段、editを$id必須にし、addと住み分けても問題はないと思います。

id:umakoya

まさにこのチュートリアルです。

edit($id = null)とedit($id)の違いはidを必須にするかどうかで、

後者だとidのパラメータなしでfunctionを呼び出すとエラーになるという理解で良いでしょうか??

2008/10/23 23:38:25

その他の回答1件)

id:krese No.1

回答回数20ベストアンサー獲得回数4ここでベストアンサー

ポイント35pt

こちらのチュートリアルでよろしかったでしょうか。

http://book.cakephp.org/ja/view/340/%E6%8A%95%E7%A8%BF%E8%A8%98%...

ひとつ注意: CakePHPは、'id'フィールドがデータ配列の中に存在している場合は、モデルを編集しているのだと判断します。もし、'id'がなければ、(addのビューを復習してください。)save()が呼び出された時、Cakeは新しいモデルの挿入だと判断します。

と書かれているように、addをeditに兼ね合いさせているだけだと思います。

2つあると冗長になるからでしょうか。(ただその場合、チュートリアルのだとメッセージが適当ではない気もしますが・・・)


別段、editを$id必須にし、addと住み分けても問題はないと思います。

id:umakoya

まさにこのチュートリアルです。

edit($id = null)とedit($id)の違いはidを必須にするかどうかで、

後者だとidのパラメータなしでfunctionを呼び出すとエラーになるという理解で良いでしょうか??

2008/10/23 23:38:25
id:krese No.2

回答回数20ベストアンサー獲得回数4

ポイント35pt

その通りです。

そちらについては

http://jp.php.net/manual/ja/functions.arguments.php#functions.ar...

に詳しい説明が掲載されています。


「デフォルト引数値」という機能(?)で

edit($id = null)とedit($id)の違いはidを必須にするかどうかで、

後者だとidのパラメータなしでfunctionを呼び出すとエラーになるという理解で良いでしょうか??

という理解で間違いないです。

id:umakoya

cakephpと言うよりもPHP自体の機能だったのですね。

大変ありがとうございました。

2008/10/24 10:10:44

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません