Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@tatataabcd

オブジェクト指向 メンバ関数にメンバ変数を代入する方法

More than 1 year has passed since last update.

はじめに

メンバ関数にそのクラス内で作成したメンバ変数を引数にしようとした時に構文エラーがでたため、どのようにしたらいいのかを考えた。

したこと

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'] = '入力してください';
        }
    }
0
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
tatataabcd
4月から新人エンジニア  使用言語はphp

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?