2012-05-01 3 views
-3

은 더 좋은 제목을 알지 못하지만 여기에는 제 코드가 있습니다.PHP에서 정의되지 않은 상수를 사용하면

내가 그것을 통해 인스턴스 때 양식 데이터를 검사 수준의 사용자를 가지고 있지만 나는 다음과 같은 오류/공지 얻을 : 나는 꽤 무엇을 이해하지

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]; 
     } 
    } 
} 

:

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. 

을 여기에 사용자 클래스의 문제는, 내가 먼저 변수를 만드는 시도하고 checkInput 메서드를 호출하는 메인 프로그램에서보다,하지만 난 같은 오류가 발생했습니다.

+0

가능한 중복 : //stackoverflow.com/questions/748289/php-getting-a-use-of-undefined-constant-cookie-login-how-do-fix-this. 중복을 요청하기 전에 검색 기능을 사용하십시오. – Gordon

+1

중복 가능한 http://stackoverflow.com/questions/2941169/what-does-the-php-error-message-notice-use-of-undefined-constant-mean/8025500#8025500 – Gordon

답변

7

당신은 배열의 키로서 사용하는 문자열을 인용한다 :

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

documentation 말씀을 :

If you use an undefined constant, PHP assumes that you mean the name of the constant itself, just as if you called it as a string (CONSTANT vs "CONSTANT"). An error of level E_NOTICE will be issued when this happens. See also the manual entry on why $foo[bar] is wrong (unless you first define() bar as a constant).

인스턴스 HTTP의 오른쪽에있는 관련 부분의 절반의
+0

무엇을 의미합니까? 이것은 마지막 하나를 시도했기 때문에'$ _POST [ "$ field"]'또는이'else $ this -> "$ field"= $ _POST [$ field];'이 오류가 발생했습니다 :'Parse 오류 : 예기치 않은 ' "', T_STRING 또는 T_VARIABLE 또는 '{12'줄의 C : \ Users \ Jinxed \ Desktop \ WebTrgovina \ app \ m \ Register \ User.m.php의 '{'또는 '$' – Jinx

+0

@Jinx : 편집을 마치고 다시 한 번 살펴 보겠습니다. 물론 12 행을 수정하여 7 행에서 발생한 오류를 수정하지 않을 것입니다. – Jon

+0

아 .. 감사합니다. 지금 이해합니다. – Jinx

관련 문제