Почему при интерполяции строк выбрасывается неопределенное свойство - PullRequest
0 голосов
/ 26 мая 2018

У меня есть этот код, где у меня есть объект 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();

 ?>

1 Ответ

0 голосов
/ 26 мая 2018

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

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