Вопрос по синтаксису PHP

123 4
UL
На сайте с 04.08.2013
Offline
68
6221

Подскажите пжл, что за форма записи, например:

function A() {

return "{$this->var1}"

."{$this->var2}";

}

Я вот обычно с каждой новой строки писал заново echo или return, а здесь конструкция в одну строку через "."

Вопрос у меня следующий: какого хера здесь делают фигурные скобки и какую роль играют кавычки?

А еще мне интересно с какой версии такая запись появилась?

Видел даже вариант с круглыми скобками:

function B() {

$param = "{$this->var1} ( {$this->var2}, ";

$param .= "{$this->var3} )";

return $param;

}

Никак не найду расшифровку что там к чему :(:( что за круглые скобки? И запятая в конце первого выражения чиста для форматирования или другое значение имеет?

Кто знает, подскажите по делу пжл.

S
На сайте с 30.09.2016
Offline
469
#1
use_linux:
через "."

Это конкатенация.

use_linux:
какого хера здесь делают фигурные скобки и какую роль играют кавычки?
Фигурные скобки показывают, что в них переменная пхп. Кавычки выделяют строку.
use_linux:
с какой версии такая запись появилась?
Сто лет в обед.
use_linux:
что за круглые скобки?
В круглых скобках - аргументы функции.
use_linux:
И запятая в конце первого выражения чиста для форматирования или другое значение имеет?
Запятая разделяет аргументы функции.
Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
UL
На сайте с 04.08.2013
Offline
68
#2

Sitealert, Ништяк, спс за инфу)

Оптимизайка
На сайте с 11.03.2012
Offline
396
#3
Sitealert:
В круглых скобках - аргументы функции.Запятая разделяет аргументы функции.

Какие еще функции и аргументы, это просто собирается строка, содержащая скобки и запятую.

ТС, https://www.php.net/manual/ru/language.operators.string.php и https://www.php.net/manual/ru/language.types.string.php#language.types.string.parsing

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
UL
На сайте с 04.08.2013
Offline
68
#4

Оптимизайка, вот я тоже подумал потом, что горбатого он вылепил, сразу видно, опыт разработки от 5 лет)) Какие еще аргументы в теле функции.. А я тут гуглил незнал как обозвать эту запись. Спс за отклик.

S
На сайте с 30.09.2016
Offline
469
#5
Оптимизайка:
Какие еще функции и аргументы, это просто собирается строка, содержащая скобки и запятую.]

Оптимизайка, я никак не ожидал от Вас такого выкидыша. Вся эта конструкция предназначена для сборки "по частям" вызова функции. Очень часто такая хрень используется во всяких зловредных программах, для незаметности взлома.

Оптимизайка
На сайте с 11.03.2012
Offline
396
#6

Sitealert, в данном конкретном фрагменте кода собирается строка, а для чего она будет использоваться в дальнейшем - вызова функции, логирования, записи в файл или еще чего-то мне неведомо, я не в битве экстрасенсов.

S
На сайте с 30.09.2016
Offline
469
#7
Оптимизайка:
в данном конкретном фрагменте кода собирается строка, а для чего она будет использоваться в дальнейшем - вызова функции, логирования, записи в файл или еще чего-то мне неведомо, я не в битве экстрасенсов.

ТС задал конкретный вопрос

use_linux:
что за круглые скобки? И запятая в конце первого выражения чиста для форматирования или другое значение имеет?
Я дал ответ, для чего это делается. Для того, чтобы собрать по кускам функцию. У того кода, что приведён в стартпосте, именно это предназначение, и никакого другого. Тут не надо быть экстрасенсом, надо просто уметь читать код.
UL
На сайте с 04.08.2013
Offline
68
#8

* @param array $router

* @return mixed

*/

Джентльмены, подскажите пожалуйста, что за хуйня в приведенном выше куске PHP кода, которая предваряется знаком "@", для чего это?

Оптимизайка
На сайте с 11.03.2012
Offline
396
#9
Lord Maverik
На сайте с 15.04.2003
Offline
471
#10
Sitealert:
Вся эта конструкция предназначена для сборки "по частям" вызова функции.

Ни для чего она не предназначена. А выполняет ровно то, что в ней написано.


function A() {

return "{$this->var1}"
."{$this->var2}";

}

Можно было спокойно написать:


function A() {
return $this->var1.$this->var2;
}

Эта функция часть класса, которая выводит в виде строки содержание двух свойств.

Зачем взяли в кавычки? Ну может, чтобы явно показать, что это строка, выполнить автоматическое приведение типов. Но конкатенация через точку сама бы это сделала.

Фигурные скобки показывают, как было указано выше, что внутри переменная (конструкция, которую нужно обработать), и будут они работать только внутри двойных кавычек. Поставим одинаковые и все перестанет работать.

Непонятно, чем ТСа так поразила сия запись.

---------- Добавлено 08.04.2019 в 05:40 ----------

Sitealert:
В круглых скобках - аргументы функции.

Строка, какие аргументы? Скобки часть строки, внутри них часть строки.

RedMall.Ru (https://redmall.ru) - Товары из Китая (Таобао, Tmall) с проверкой качества, скидка для форумчан 7% Партнерская программа 2 уровня: 5% + 5%. Подробнее. (https://redmall.ru/about/partner/)
123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий