質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

1回答

4889閲覧

cakephpでのfunctionの設定の仕方

moupai

総合スコア24

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

1クリップ

投稿2015/06/06 11:32

編集2015/06/06 11:37

プログラミング超初心者で質問の仕方もよく分かってないかと思いますがよろしくお願いします。

ブログサービスを作ってる時の編集ページなどURLでパラメーターを渡す際には下記のようにコントローラーで($id = null)と入力しているのですが
public function edit($id = null){
}
ドットインストールで学習を進めたところ削除機能の設定では
public function delete ($id){
}
とnullを定義していませんでした。

【質問1】
そもそもcaekephpのコントローラーで($id = null)と定義することにはどういった意味があるのでしょうか?

【質問2】
また($id)と($id = null)にはどういった違いがあるのでしょうか?

超初心者の質問で申し訳ございません。
よろしくお願い致します。

【参考サイト】
ドットインストール
http://dotinstall.com/lessons/basic_cakephp/7520

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

それはcakephpに限った話ではなくて、PHPでのfunctionでの決まり事ですが、
引き数で値を設定した場合、何も渡されないとそれが初期値になります。

例えば

function hoge($a, $b = 3){ }

のような関数を作って、ある場所では

hoge(10, 5):

とコールすれば$a = 10、$b = 5 で関数が実行されますが、

hoge(12);

とコールすれば$a = 12、$b = 3 で関数が実行されます。

たしかcakephpではcontrollerのfunctionがそのままactionになっていて、
http://hogehage.com/controller/edit/param
みたいにすると、そのfunctionが呼ばれ、paramがパラメターとして渡されるんだったと記憶しています。

public function edit($id = null){ }

の場合、$idにparamが渡されるということではなかったでしょうか?

で、nullはどういうことかというと、
http://hogehage.com/controller/edit/
のようにパラメターが指定されなかった場合、$idにはnullが代入されますよ、ということです。

では

public function edit($id){ }

はどうなるかというと、パラメターが渡されていないのでやっぱり$idはnullになります。

結局、どっちの記述でもパラメターが渡されたら$idに代入され、
何も渡されなかったら$idはnullになります。

投稿2015/06/06 12:44

編集2015/06/06 12:50
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moupai

2015/06/08 01:42

丁寧かつ迅速な対応本当にありがとうございます!! まとめると public function edit($id = null){ } と public function edit($id){ } は全く同じ用法と考えても大丈夫でしょうか? またブログサービスを作ってると仮定して編集ページや削除機能をつける際パラメータを渡す記述をコントローラーに書くと思うのですがどちらの記述がオススメでしょうか? よろしくお願い致します。
退会済みユーザー

退会済みユーザー

2015/06/08 02:22

public function edit($id = null){ } でしょうね。 PHPのエラーリポートレベルにもよるのですが、厳密には、 http://hogehage.com/controller/edit/ でアクセスされた場合、 public function edit($id){ } だと、 Warning: Missing argument 1 for hoge() という「引数がありません」という意味のWarningが発生するはずです。
退会済みユーザー

退会済みユーザー

2015/06/08 02:24

cakephp側でその辺をラップしている可能性もありますが、$id = null としておく方が正確な対応かと思います。
moupai

2015/06/08 02:34

ありがとうございます! とても分かりやすくて本当に助かりました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問