PHP изогнутый синтаксис фигурной скобки для членской переменной

vector1.insert( vector1.end(), vector2.begin(), vector2.end() );
79
задан Funk Forty Niner 5 May 2017 в 19:15
поделиться

5 ответов

Фигурные скобки используются для явного указания конца имени переменной. Например:

echo "This square is {$square->width}00 centimeters broad."; 

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

$class->{'variable_name'} // Same as $class->variable_name
$class->{'variable' . '_name'} // Dynamic values are also allowed

А в вашем случае вы просто окружаете их синтаксисом фигурных скобок.

См. руководство по PHP , " сложный (фигурный) синтаксис "

51
ответ дан 24 November 2019 в 10:17
поделиться

I know the syntax just when using variable variables:

$userProp = 'id';
$this->_session->{'user_'.$userProp};
23
ответ дан 24 November 2019 в 10:17
поделиться

Theres probably one big advantage of that syntax, however, its generally in the domain of hairy stuff, and things you probably want to avoid.

It permits you to use characters in variable names that are otherwise unpermitted.

ie:

$this->object->{"hello world\0\n"} 
$this->object->{"function(){   this is a truely awful  name for a variable }"} 
19
ответ дан 24 November 2019 в 10:17
поделиться

The two examples in your question do the same thing. PHP allows you to access member data/methods in several ways...

object->{'name_of_member'};

object->name_of_member;

$member = 'name_of_member';
object->$member;
11
ответ дан 24 November 2019 в 10:17
поделиться

В приведенном вами примере реальной разницы нет, и следует использовать IMO $ this -> _ session-> user_id , потому что он более понятен.

Что за фигурные Синтаксис скобок на самом деле хорош для доступа к переменной-члену путем создания выражения для ее имени, например $ this -> _ session -> {'user_id'. $ index} .

11
ответ дан 24 November 2019 в 10:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: