2012-05-14 3 views
0

PHP에서 부모 클래스의 내용에 액세스하려고하지만 어떤 이유로 뽑아 내고 싶지 않습니다. 나는 OOP에 매우 익숙하다. 그래서 어떤 제안이라도 있으면 알려주세요. 다음은 내 코드입니다 : 원래 연장 두 번째 클래스PHP에서 부모 변수 내용에 액세스하십시오.

class baseQuery { 
    public static $numbers = "(1, 2, 3, 4, 5, 6, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 32, 39, 50, 52, 72, 109, 110, 850, 1839, 1968, 1969, 1970, 1972, 1973, 2364, 2365, 3009)"; 
} 

class specificQuery extends baseQuery { 
    public function __construct() { 
     $numbers = $this->numbers; 
    } 
    public function test() { 
     echo $numbers; //fails 
    } 
} 

답변

2

, 당신은 다음 구문을 사용합니다. PHP에 관한 한, test() 메소드는 선언하지 않은 $numbers이라는 변수에 액세스하려고합니다. $this-> 또는 self:: 구문을 사용하지 않으면 PHP는 로컬 변수 (또는 실제로 위험한 경우 전역 변수)라고 가정합니다.

0

, 정기적 변수를 설정하는, 당신은 어딘가에 저장해야합니다.

두 번째 클래스에 새 공용 변수를 할당하고 숫자를 저장 한 다음 함수에 표시합니다.

0
class baseQuery { 
    public static $numbers = "(1, 2, 3, 4, 5, 6, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 32, 39, 50, 52, 72, 109, 110, 850, 1839, 1968, 1969, 1970, 1972, 1973, 2364, 2365, 3009)"; 
} 
class specificQuery extends baseQuery { 
    public function __construct() {} 

    public function test() { 
     echo self::$numbers; // works :) 
    } 
} 
1

"Late Static Bindings"을 읽어야합니다. 기본적으로 static 키워드를 사용하여 numbers 속성에 액세스합니다.

class specificQuery extends baseQuery { 
    public function test() { 
     echo static::$numbers; 
    } 
} 

은 그때 당신이 원본을 확장하는 클래스의 숫자 $를 설정하는 경우 때문에 자기가 정적 사용 좋아, 그것은 오히려 기본 클래스보다 액세스 할 수있다.

self::$varname 

당신은 실제 클래스 이름을 사용하는 대신 self하여 동일한 기능을 수행 할 수 있습니다 : 당신이 정적 멤버에 액세스하려면

관련 문제