【发布时间】:2018-01-09 06:31:22
【问题描述】:
我正在研究一个看起来像这样的 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 )
如何实现我想要的结果以及如何保护私有变量?
我们将不胜感激所有帮助和建议。
谢谢!
【问题讨论】:
-
你不能从构造函数返回。只需回显
$car->owner()或可能使用__toString() -
你不能回显一个类,你应该在它里面有一个函数。
-
@Phiter 你可以回显一个类,但你需要定义
__toString魔法方法。 -
哦,很高兴知道,谢谢!
-
protect private variable来自什么?
标签: php class private-members