2012-02-27 4 views
0
public function getUserRoles() 
{ 
    public $query = "SELECT * FROM user_roles WHERE userID = ".floatval($this->userID)."ORDER BY addDate ASC"; 
    if ($query_run = mysql_query($query)) 
    { 
     public $resp = array(); 
     while ($query_row = mysql_fetch_array($query_run)) 
     { 
      $roleID = $query_row['roleID']; 
     } 
     return $resp; 
    } 
} 

나는 오류가 점점 오전 : 오류 구문 분석 :이 경우 줄에 /Applications/XAMPP/xamppfiles/htdocs/acltut/assets/php/class.acl.php에 34.Line (34) 구문 오류, 예기치 T_PUBLIC을 것입니다 세 번째 줄에 "public $ query"라고 써라."예기치 않은 t_public"오류가 발생하는 이유는 무엇입니까?

var/public/private/protected/etc와 같은 변수에 "visibility"또는 "permissions"를 부여하면 안됩니다.

하고 그런 경우가 있다면, 다음 줄은하지 않았을

과 같이 쓸 수 :

if (public $query_run = mysql_query($this->query)) {} 

난 당신이 공공/민간을 포함해야하는 경우에 혼란 스러워요/보호와 변수를 참조 $ this-> 변수를 만들 수있는 경우.

+0

http://www.php.net/manual/en/language.oop5.visibility.php를주의 깊게 읽었습니까? public/private/protected는 메서드 또는 속성 선언에 사용되어야합니다. – Slawek

+0

해결되었습니다. Mike Purcell에게 감사드립니다. – pancakeplease

+0

오, 그걸 알지 못했습니다. 그냥 해냈어. – pancakeplease

답변

6

public, protected 및 private은 클래스 함수 (메서드) 및 멤버 변수에 대한 범위 분석을 제공합니다.

class User 
{ 
    public $query; 

    public function getUserRoles() 
    { 
     $this->query = "SELECT * FROM user_roles WHERE userID = ".floatval($this->userID)."ORDER BY addDate ASC"; 
    } 
} 
+0

감사합니다. 혼란스러워. 따라서 메소드 내부가 아닌 클래스의 속성에 대해서만 public/private을 정의합니다. 알았다. – pancakeplease

+0

오른쪽. 당연히 메서드 내에서 멤버를 참조 할 수 있습니다 (범위에서 허용하는 한 상속, 자체 등). –

2

$query 전에 public를 제거 : 당신은 같이해야 할 것이다. 그것은 거기에 속하지 않습니다.

관련 문제