2012-04-20 50 views
0

为什么下面的代码不返回值?我只是空白屏幕。oops私有变量值不会返回错误

至少它应该返回一些错误,当我尝试在子类中的私有变量val。

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 2012-04-20 09:03:37

回答

1

的原因是,你要打印NULL:

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

print NULL; 
//nothing.... 

有关详细信息,请@詹姆斯的回答。

0

尝试在php.ini中启用日志记录和创建你喜欢指定这样的文件(适用于Windows):

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

不要忘记创建文件夹,该文件并启用写入权限到该文件。

2
private $instance_count = 0; 

更改为

protected $instance_count = 0; 

子类不能访问私有变量。你需要保护变量。

而且,您的评论:

//static data member 

该变量不是静态的,不知道为什么评论是存在的。

+0

詹姆斯:排字错误 – user1127564 2012-04-20 08:50:13

+0

其私人只有 – user1127564 2012-04-20 08:50:27

+0

我知道这是私人的,这是你的问题。 “子类不能访问私有变量。”受保护的变量可以由子类访问,但不能从外部访问,这就是你想要的。 – James 2012-04-20 08:51:32