Я работаю над классом 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 = new xyz("sedan");
так что все, что вы возвращаете, никуда не денется Создайте другие методы в классе, чтобы возвращать значения.owner
метод public и do `echo $ car-> owner ();». Метод возвращает строку, а затем строка отображается. Simple.var_dump($car);
, Если вы хотите контролировать, как объект преобразуется в строку, вам необходимо переопределить __toString
метод (см. PHP документация).$car->owner
или же $car->owner()
без изменения видимости вы должны увидеть ошибки.Других решений пока нет …