Что такое ссылки Учебник PHP

Перегрузка/overloading свойств и вызовов методов объектов

Это расширение предназначено для перегрузки доступа к свойствам объекта и вызовов методов. В этом расширении определена только одна функция, overload(), принимающая имя класса, в котором эта функциональность должна быть включена. Указанный класс должен определять соответствующие методы, если "хочет" иметь данную функциональность: __get(), __set() и __call(), соответственно, для получения /установки свойства или вызова метода. Этот способ перегрузки может быть избирательным. Внутри этих функций обработчика перегрузка отключена, поэтому вы можете нормально получать доступ к свойствам объекта.

Что такое ссылки

Ссылки в PHP это средство доступа к содержимому одной переменной под разными именами. Они не похожи на указатели C и не являются псевдонимами таблицы символов. Заметьте, что в PHP имя переменной и содержимое переменной это разные вещи, поэтому одно содержимое может иметь разные имена. Ближайшая аналогия - имена файлов Unix и файлы - имена переменных являются вхождениями директорий, а содержимое переменных это сами файлы. Можно представить ссылки как hardlinking/жёсткое связывание в файловых системах Unix.

Передача по ссылке

Вы можете передать переменную в функцию по ссылке, и функция сможет модифицировать свои аргументы. Синтаксис таков:

function foo (&$var) { $var++; } $a=5; foo ($a); // $a здесь 
равно 6

Заметьте, что в функции отсутствует знак ссылки - он есть только в определении функции. Одного определения функции достаточно для корректной передачи аргументов по ссылке.

По ссылке можно передавать: [an error occurred while processing this directive]

  • переменные, например, foo($a)

  • оператор new, например, foo(new foobar())

  • ссылку, возвращённую из функции, например:

    function &bar() { $a = 5; return $a; } foo(bar());

Любое другое выражение не должно передаваться по ссылке, так как результат не определён/undefined. Например, следующий передача по ссылке является неправильной:

function bar() // отсутствует & { $a = 5; return $a; } foo(bar()); 
foo($a = 5) // выражение, не переменная foo(5) // константа, не переменная

Это требования для PHP 4.0.4 и позднее.

Возвращение по ссылке

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

function &find_var 
($param) { ... код ... return $found_var; } $foo =& find_var ($bar); $foo->x 
= 2;

Здесь будет установлено свойство объекта, возвращаемое функцией find_var, а не его копия, как было бы без использования синтаксиса ссылок.

Примечание: в отличие от передачи параметров, здесь вы должны использовать & в обоих местах - для указания на то, что вы возвращаете по ссылке, а не копии, как обычно, и для указания что связывание по ссылке, а не обычное присвоение, должно выполняться для $foo.

 

Математика решение задач