Имена переменных в PHP начинаются с $, поэтому $ entryId - это имя переменной.
$ это специальная переменная в объектно-ориентированном программировании на PHP, которая является ссылкой на текущий объект.
-> используется для доступа к члену объекта (например, свойствам или методам) в PHP, как синтаксис в C ++.
поэтому ваш код означает это:
Поместите значение переменной $ entryId в поле entryId (или свойство) этого объекта.
Оператор & в PHP означает передачу ссылки. Вот пример:
$b=2;
$a=$b;
$a=3;
print $a;
print $b;
// output is 32
$b=2;
$a=&$b; // note the & operator
$a=3;
print $a;
print $b;
// output is 33
В приведенном выше коде, поскольку мы использовали оператор &, ссылка на то, куда указывает $ b, хранится в $ a. Таким образом, $ a на самом деле является ссылкой на $ b.
В PHP аргументы передаются по значению по умолчанию (на основе C). Поэтому при вызове функции при передаче значений они копируются по значению, а не по ссылке. Это по умолчанию в большинстве ситуаций. Однако есть способ пройти мимо ссылочного поведения при определении функции. Пример:
function plus_by_reference( &$param ) {
// what ever you do, will affect the actual parameter outside the function
$param++;
}
$a=2;
plus_by_reference( $a );
echo $a;
// output is 3
Есть много встроенных функций, которые ведут себя так. Как и функция sort (), которая сортирует массив, будет влиять непосредственно на массив и не будет возвращать другой отсортированный массив.
Однако есть кое-что интересное. Поскольку режим передачи по значению может привести к большему использованию памяти, а PHP является интерпретируемым языком (поэтому программы, написанные на PHP, не так быстры, как скомпилированные программы), чтобы заставить код работать быстрее и минимизировать использование памяти, существуют некоторые изменения в интерпретаторе PHP. Один ленивый (я не уверен насчет названия). Что означает это:
Когда вы копируете переменную в другую, PHP скопирует ссылку на первую переменную во вторую переменную. Таким образом, ваша новая переменная на самом деле является ссылкой на первую переменную до сих пор. Значение еще не скопировано. Но если вы попытаетесь изменить любую из этих переменных, PHP создаст копию значения, а затем изменит переменную. Таким образом, у вас будет возможность сэкономить память и время, ЕСЛИ ВЫ НЕ ИЗМЕНИТЕ ЗНАЧЕНИЕ.
Итак:
$b=3;
$a=$b;
// $a points to $b, equals to $a=&$b
$b=4;
// now PHP will copy 3 into $a, and places 4 into $b
После всего этого, если вы хотите поместить значение $ entryId в свойство entryId вашего объекта, приведенный выше код сделает это и не будет копировать значение entryId до тех пор, пока вы не измените какой-либо из них. при меньшем использовании памяти. Если вы действительно хотите, чтобы они оба указывали на одно и то же значение, используйте это:
$this->entryId=&$entryId;