2012-04-20 4 views
0

아래 코드가 값을 반환하지 않는 이유는 무엇입니까? 나는 방금 빈 화면을 얻고있다.oops 개인 변수 값이 오류를 반환하지 않습니다.

최소한 자식 클래스에서 개인 변수 val을 시도 할 때 약간의 오류가 반환되어야합니다.

var_dump($CustomerObj->sub2()); 
NULL 

print NULL; 
//nothing.... 

자세한 내용은 @ 제임스의 대답을 확인하십시오

class Customer { 

    private $instance_count = 0; //private data member 
    function sub1(){ 
     return $this->instance_count++; 
    } 

} 
class CustomerChild extends Customer{ 
    function sub2(){ 
     return $this->instance_count++; 
    } 

} 
$CustomerObj = new CustomerChild(); 
print $CustomerObj->sub2(); 
+0

하지만 정의되지 않은 변수를 사용할 때 오류가 발생하며 자식 클래스의 개인 메서드에 액세스 할 때 발생합니다. – user1127564

답변

1

이유는 NULL을 인쇄하려고한다는 것이다.

0

는 php.ini 파일에 로깅을 설정하고 (Windows 용)는과 같이 지정된 파일을 만들려고 :

log_errors = On 
error_log = C:\TEMP\PHP.LOG 

그나마 그 파일에 쓰기 권한을, 파일을 폴더를 만들 수 있도록하는 것을 잊지.

2
private $instance_count = 0; 

변경

protected $instance_count = 0; 

에 하위 클래스는 private 변수에 액세스 할 수 없습니다. 이를 위해 보호 된 변수가 필요합니다. 또한

, 귀하의 코멘트 :

//static data member 

코멘트가 왜 변수가 확실하지 않은 정적 아니라고.

+0

제임스 : 오타 수정 실수 – user1127564

+0

개인 전용 – user1127564

+0

개인적으로 알고 있습니다. 문제가 있습니다. "하위 클래스는 전용 변수에 액세스 할 수 없습니다." 보호 된 vars는 하위 클래스에서 액세스 할 수 있지만 외부에서 액세스 할 수는 없습니다. 원하는 바입니다. – James

관련 문제