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