2016-12-05 3 views
0

Я спрашиваю, что может быть последствием этого определения назначения вара:Нескольких варов в одном предложении в PHP

$component = $id = $class = ''; 

Я имею в виду допускаемые IDE (PhpStorm), код не возвращать предупреждения, фатальные или что-то еще, но .... есть какие-то но?

Как вы думаете?

+5

это нормально. это стандартный синтаксис. –

+0

Я лично не вижу в этом ничего плохого в PHP. Просто имейте в виду, что этот тип назначения может работать по-другому на других языках. В javascript, я считаю, это создаст три переменные, указывающие на один и тот же объект. – aynber

ответ

2

Это нормально.

PHP использует копию на системе записи. Это означает, что с примитивными типами, такими как строки или ints, действительно создаются в памяти при изменении и, вероятно, в вашем примере будет хорошо.

PHP

$component = $id = $class = 'foobar'; 

var_dump($component); 
var_dump($id); 
var_dump($class); 

выход

string 'foobar' (length=6) 
string 'foobar' (length=6) 
string 'foobar' (length=6) 

Но будьте осторожны, когда вы делаете это с объектами, объекты передаются по ссылке и имеют различное поведение:

PHP

class Obj 
{ 
    public $_name; 
} 

$a = $b = new Obj(); 
$component = $id = $class = 'foobar'; 

$b->_name = 'Reynier'; //try to change name of second object only 
$id = 'Reynier'; // try to change $id only 

var_dump($a); 
var_dump($b); 

var_dump($component); 
var_dump($id); 
var_dump($class); 

выход

#Both object are changed 
object(Obj)[1] 
    public '_name' => string 'Reynier' (length=7) 
object(Obj)[1] 
    public '_name' => string 'Reynier' (length=7) 

#only $id was changed 
string 'foobar' (length=6) 
string 'Reynier' (length=6) 
string 'foobar' (length=6) 
Смежные вопросы