我正在开发一个看起来像这样的PHP类:
<?php
class xyz{
public $car1;
public $car2;
private $owner;
public function __construct ($type){
$this->car1 = $type;
$this->owner = "John";
return $this->owner();
}
private function owner(){
return "Owner of ".$this->car1." is ".$this->owner;
}
现在,当我通过其他代码调用此类时出现问题,我可以轻松访问私有变量并且返回函数无法正常工作。
以下是样本:
<?php
$car = new xyz("Sedan");
echo $car; //Expected result: Owner of Sedan is John.
?>
如果我打印$ car,这就是我得到的
Object ( [car1] => Sedan [car2] => "" [owner:xyz:private] => John )
如何实现我想要的结果?如何保护私人变量?
所有的帮助和建议将不胜感激。
谢谢!
答案 0 :(得分:3)
$car = new xyz("sedan");
时,所以您返回的任何内容都无处可去。在类中创建其他方法以返回值。owner
方法设为public并执行`echo $ car-&gt; owner();“。该方法返回一个字符串,然后回显该字符串。简单。 var_dump($car);
会发生这种情况。如果要控制对象如何转换为字符串,则需要覆盖__toString
方法(请参阅php documentation)。$car->owner
或$car->owner()
而不更改可见性,则会看到错误。