2014-06-30 2 views
-1
<?php 
$login1 = new Login("cam", "1234"); echo "<br>"; 
echo $login1->authenticate($login1->name, $login1->this->password); 

class Login{ 
    public $name; 
    public $password; 

    function Login($u, $w){ 
     $this->name = $u; 
     $this->$password = $w; 
    } 

    function authenticate($name, $password){ 
     $lookupusername = "cam"; 
     $lookuppassword = "1234"; 
     if($name == $lookupusername && $password == $lookuppassword){ 
      return "Login Success"; 
      echo "Login Success"; 
     } else { 
       return "Login Fail"; 
       echo "Login Fail"; 
      } 
    } 
} 
?> 

PHP를 처음 사용했습니다. 내 로그인 클래스의 생성자가 문자열 리터럴을 클래스의 이름 및 비밀번호 속성으로 설정하지 않는 이유가 궁금합니다. set() 메서드를 시도해 보았지만 작동하지 않습니다. 또한 문자열 리터럴을 변수로 할당하고 참조로 전달하려고했습니다. 아니. 내가 어디로 잘못 가고 있니?PHP에서 생성자의 속성 할당

+1

를 사용하는 것은이'$이 -> $ password'은 잘못된 것입니다, 또한 $ password' – Athafoud

+1

이'$ login1-> this-> password' IS'에서'$를 '제거 오류,'$ login1-> password'로 변경하십시오. – Athafoud

+0

오, 약간의 오타가있는 것처럼 보입니다. 고맙습니다. – Cameronc56

답변

2

PHP는 자바가하는 것과 같은 방식으로 생성자를 작성하지 않습니다 (이는 귀하의 예제가 기반으로 한 것으로 보입니다).

public function __construct($u, $w) { 
    $this->name = $u; 
    $this->password = $w; 
} 

또한, name 속성에 액세스하는 당신의 방법이 정확하지만 password이 잘못되었습니다 : 아래처럼, PHP의 __construct 방법을 사용하는 것이 좋습니다. 대신 $this->$password$login1->password 대신 $login1->this->password

+0

고맙습니다, 잘 했어. – Cameronc56

+0

한 가지 더 : 생성자를 만들 때 기본 생성자가 여전히 작동합니까? 그렇다면 매개 변수없이 만들어진 객체를 어떻게 비활성화 할 수 있습니까? – Cameronc56

+0

@ Cameronc56 - 깨끗하게 작동하지 않습니다 (경고가 표시됩니다); 당신이 대신 할 수있는 것은 기본 매개 변수를 사용하는 것입니다 ('function __construct ($ a = null, $ b = null) {' –