Автор Тема: Предупреждение: Only variable references should be returned by reference  (Прочитано 6481 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Nicki

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 107
  • +0/-0
  • 0
    • Просмотр профиля
    • http://cprazdnikom.ru
стояла версия 4.3.9 но пришлось перенустановить на денвера, а в нем стоит пхп 4.4.0. Теперь выскакивает такое предупреждение во многих частях скрипта:

function &getContent($fileName)  {      $fileName $_SERVER[\'DOCUMENT_ROOT\'].$this->cfgs[\'common\'][\'site\'][\'mailDir\'].$fileName;      return file_get_contents($fileName);  }  

Notice: Only variable references should be returned by reference in z:\\home\\mailer.class.php on line 46

Причем и в ADODB, некоторых PEAR и естественно в моих скриптах. Я в принципе понимаю, что ничего серьезного, но раздражает постоянное появление этого предупреждения (5-9 штук на страницу), а полностью отключать вывод предупреждений не хоца, чтоб потом не мучится и не искать причину странного поведения скриптов. Что иэто за предупреждение и может ли повлиять на дальнейшую совместимость кода?
Поздравления с днем Святого Валентина

Оффлайн andymc

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 400
  • +1/-0
  • 0
    • Просмотр профиля
У тебя в коде function &getContent($fileName)
получается, что перед функцией стоит & -
такого быть не должно, т.к. функцию нельзя передать по ссылке.

Можно или так
function getContent($fileName)
или так
function getContent(&$fileName)

В общем надо или удалить или передвинуть & в начало переменной.

Кстати, notice переводится как "только переменные могут быть переданы по ссылке"

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
andymc
Перестань писать о том, о чем не имеешь представления.

Nicki
То, что перед функцией стоит амперсанд, говорит о том, что возвращена будет ссылка. А ссылка должна быть, грубо говоря, на переменную. А получается, что она стоит на результат выполнения функции [p]file_get_contents[/p].

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
andymc
Присоединюсь к hanslinger.

Nicki, hanslinger
От себя добавлю, что в PHP6 подобные конструкции будут считаться уже не нотисом, а ошибкой (согласно MTD).
В большинстве случаев можно возвращать по значению без ущерба для скрипта.
LJ: Backslashed life (rss)

Оффлайн andymc

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 400
  • +1/-0
  • 0
    • Просмотр профиля
hanslinger
CGVictor
Все ошибаются, я как все, учусь.

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
[off]andymc
Высказывая непроверенные суждения на форуме, ты учишься за счет чужих проблем, не решая их.
Не надо так делать. Это невежливо.[/off]
LJ: Backslashed life (rss)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28