Страницы

Поиск по вопросам

четверг, 19 марта 2020 г.

Зачем нужны кавычки и фигурные скобки: “{$this->name}”?

#php


Всем добрый день, объясните, пожалуйста, смысл следующей записи.
        public function get_Info($name,$surname){

            $this->name    = $name;
            $this->surname = $surname;

            return "{$this->name}"."{$this->surname}";
        }

Для него нужны ковычки и фигурные скобки внутри них? Почему нельзя было просто написать 
return $this->name.$this->surname;
    


Ответы

Ответ 1



string expansion в примере вероятно приведение к строке, можно было написать return "".$this->name.$this->surname; или return "{$this->name}{$this->surname}"; хотя, конкатинация сама по себе к строке приводит, в целом смысла нет так делать здесь. вот наглядная иллюстрация:

Ответ 2



ЕМНИП, это ничего не даёт, скорее наоборот, некрасиво. Это для вашего сведения конкатация строк. Пример тот что вы предоставили будет работать и без фигурных скобок. return "$this->name $this->surname"; точно так же переменные обычные return "$someVar" . "". "$this->surname"; Реальное применение скобкам рождается когда в такую строку вы захотите запихнуть что то типа return "$this->name['key']"; этот код выдаст ошибку return "{$this->name['key']}"; Опять же его можно заставить работать return "$this->name[key]"; Но тогда A: у вас не будут работать строковые ключи Б: в StrictMode у вас будут выскакивать Notice о том что Undefined Constant и бла бла бла

Ответ 3



ну вообще это для задания сложных выражений. почитайте Сложный (фигурный) синтаксис Он называется сложным не потому, что труден в понимании, а потому что позволяет использовать сложные выражения. Любая скалярная переменная, элемент массива или свойство объекта, отображаемое в строку, может быть представлена в строке этим синтаксисом. Просто запишите выражение так же, как и вне строки, а затем заключите его в { и }. Поскольку { не может быть экранирован, этот синтаксис будет распознаваться только когда $ следует непосредственно за {. Используйте {\$, чтобы напечатать {$.

Комментариев нет:

Отправить комментарий