Почему при интерполяции строк выбрасывается неопределенное свойство

У меня есть этот код, где у меня есть объект Dog, который расширяет Animal.

Когда я использую интерполяцию строк в классе Dog для доступа к методу в классе Animal, у меня возникают проблемы, но когда я просто объединяюсь, все идет хорошо. Why²

Пример кода:

<?php

class Animal
{
private $name;
public function getName():string
{
return $this->name;
}
public function setName($value)
{
$this->name=$value;
}
}

class Dog extends Animal
{
public function Walk()
{
echo $this->getName() ." is walking."; //This line works
echo "$this->getName() is walking."; //This line throws the exception Notice: Undefined property: Dog::$getName in C:\xampp\htdocs\stackoverflow\question1\sample.php on line 27 () is walking.
}
}

$dog = new Dog();
$dog->setName("Snoopy");
$dog->Walk();

?>

0

Решение

Окружить вызов функции скобками:

class Dog extends Animal
{
public function Walk()
{
echo $this->getName() ." is walking.";
echo "{$this->getName()} is walking.";
}
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]