-3

これのより良いタイトルはわかりませんが、これが私のコードです。

インスタンス化されたときにフォームデータをチェックするクラスユーザーがいますが、次のエラー/通知が表示されます:

Notice: Use of undefined constant username - assumed 'username' in C:\Users\Jinxed\Desktop\WebTrgovina\app\m\Register\User.m.php on line 7

Notice: Use of undefined constant password - assumed 'password' in C:\Users\Jinxed\Desktop\WebTrgovina\app\m\Register\User.m.php on line 7

Notice: Use of undefined constant passwordc - assumed 'passwordc' in C:\Users\Jinxed\Desktop\WebTrgovina\app\m\Register\User.m.php on line 7

... and so on for every defined variable in user class.

ユーザークラスは次のとおりです。

class User {
    function __construct(){
        $test = 'blah';
        $username; $password; $passwordc; $name; $surname; $address;
        $this->checkInput(array(username=>20, password=>20, passwordc=>20, name=>20, surname=>40, address=>40));
    }
    //array(formName=>CharacterLimit)
    private function checkInput($fields){
        foreach($fields as $field=>$limit){
            if($_POST[$field]=='' || strlen($_POST[$field])>$limit) $this->error[] = "$field must be filled in, and it must be less than or $limit characters long.";
            else $this->{$field} = $_POST[$field];
        }
    }
}

何が問題なのかよくわかりません。最初に変数を作成してみましたが、メインプログラムから checkInput メソッドを呼び出しましたが、同じエラーが発生しました。

4

1 に答える 1

8

配列キーとして使用する文字列を引用符で囲む必要があります。

$this->checkInput(array(
    'username'=>20,
    'password'=>20,
    'passwordc'=>20,
    'name'=>20,
    'surname'=>40,
    'address'=>40));

ドキュメントには次のように記載されています。

CONSTANT 未定義の定数を使用すると、PHP は、文字列 ( vs )として呼び出したかのように、定数自体の名前を意味していると見なします"CONSTANT"。この場合、レベルのエラーE_NOTICEが発行されます。$foo[bar]なぜ間違っているのかについてのマニュアルエントリも参照してください(最初define() barに定数として使用しない限り)。

于 2012-05-01T11:05:10.890 に答える