#はじめに
メンバ関数にそのクラス内で作成したメンバ変数を引数にしようとした時に構文エラーがでたため、どのようにしたらいいのかを考えた。
#したこと
TodoValidationクラスでcheckメソッドを作成し、そのメソッドをcontrollerで呼び出そうとしたコードが以下である。
public function check($this->str)
{
// 空文字チェック
if (empty($this->str)) {
return $_SESSION['err_msg'] = '入力してください';
}
}
このメソッドをcontroller側で呼び出そうと以下のコードを書いた。
$toDoValidation->check($this->product_name);
が、フィールドに値を入力してPOST送信してもセッション変数のエラーメッセージは空になっていた。
#原因
メンバ関数の引数にメンバ変数は代入できない決まりがある。
なので、
public function check($str)
{
// 空文字チェック
if (empty($str)) {
return $_SESSION['err_msg'] = '入力してください';
} else {
return true;
}
}
というようにメンバ関数の引数に変数を入れることによって正しくバリデーションを行うことができた。
#どうしてもメンバ変数を使用したい場合
以下のように記述する。
public function check($str)
{
$this->str = $str;
// 空文字チェック
if (empty($this->str)) {
return $_SESSION['err_msg'] = '入力してください';
}
}