PHP возвращает ссылки - '&' необходимо в вызывающей программе? - PullRequest
2 голосов
/ 13 декабря 2011

Я использую joomla, и я прочитал API, и я заметил, что класс JFactory, имеющий функции, возвращающие ссылку на объект, но примеры, которые я собрал из Интернета, не используют & при использовании функций.

Скажем, например, Jfactory::getSession(), который возвращает ссылку на глобальный сеанс. документация показывает, что она определена как function &getSession(params){code} - четко определяющая возврат ссылки. однако, в этом примере , они называют это как $session = JFactory::getSession();, не должно ли это быть $session =& JFactory::getSession();?

Здесь в php документации говорится, что в функции есть & и в вызывающем =&. Я также прошел программирование на C, и если я пропущу такие вещи, будут ошибки типа «недопустимое преобразование указателя» - что не очень хорошая практика программирования.

Что такое правильная практика?

Дополнительная информация:

Я использую Joomla 1.7, и я создаю компонент. я работаю на xampp с php 5.3.8

1 Ответ

1 голос
/ 13 декабря 2011

Это зависит от:
- версии Joomla и используемой вами версии PHP
- что возвращает метод JFactory :: getSession ()

Joomla версии 1.5 совместима с PHP 4и PHP 5, версии 1.6 и 1.7 совместимы только с PHP 5.

Если метод возвращает объект, & является обязательным в PHP 4: по умолчанию объекты передаются / возвращаются по значению (aпроисходит копирование объекта).& избегает копирования.
В PHP 5 & бесполезен: объекты всегда передаются / возвращаются по ссылке (копирование не происходит).

Если метод возвращает что-либо еще,& не следует использовать, но может быть полезно в некоторых очень редких случаях (например, для экономии памяти, если у вас есть огромный массив или строка, например, и вы не хотите копировать их в назначении).

Хорошей практикой является всегда ставить & в присваивании, когда сигнатура метода также включает &.

В вашем случае, я думаю, что вы используете PHP 5 ипоследняя версия Joomla, поэтому не используйте &: это, вероятно, устаревший код в источниках Joomla.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...