Автор Тема: Передача параметров в PHP 4.3.x (использовать ли &)  (Прочитано 3810 раз)

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

Оффлайн Aku Aku

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 47
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Нужно ли в PHP 4.3.x использовать & для передачи параметра по ссылке, например:


$db 
= new DB();
$myclass = new MyClass(&$db);


или это было актуально для ранних версий а теперь автоматом передается по ссылке?

Оффлайн PyJIeT

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 20
  • +0/-0
  • 0
    • Просмотр профиля
    • http://myscript.h12.ru
Нужно!Но не надо его ставить повсеместо.
There no unblockable doors, there no unwinnered wars

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Aku Aku
так писать не надо:
$myclass = new MyClass(&$db);

писать надо так:
 class MyClass {
  ......
  function 
MyClass (&$db) { // имено благодаря этой строке будет происходить передача объекта по ссылке
   
.....
  }
.....
}
$myclass = & new MyClass($db); // вот так объект передается по ссылке
« Последнее редактирование: 04 Апреля 2004, 12:13:06 от Макс »
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Aku Aku

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 47
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
спасибо за ответы. ясно.
буду перелопачивать код и вставлять амперсанды :-)

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
кстати, я кое-что забыл :

class MyClass 
  var 
$db;
  ...... 
  function 
MyClass (&$db) { // имено благодаря этой строке будет происходить передача объекта по ссылке 
   
$this->db = &$db// эта строка тоже важна.
   
..... 
  } 
..... 
}
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
Я снова влезу с оффтопиком, но на вопрос автора вроде уже ответили, а мой вопрос всё же не так далек от темы:
Вы не в курсе, почему это передача аргумента по ссылке при вызове функции/метода была объявлена deprecated? Не то чтобы меня это очень беспокоило, просто любопытно...
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
FreeSpace
ты про
$myclass = new MyClass(&$db);
?

ИМХО это неправильно, если в функцию/метод можно будет передавать параметры как по ссылке (MyClass(&$db); ) так и по значению (MyClass($db); ). Четко объяснить не могу - интуитивно чувствую, что можно на скрытые баги в скрипте натолкнуться.
А вообще, можешь такие вопросы задать прямо разработчикам
http://news://news.php.net
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
Макс
Да, я именно про это и говорил.
Но я имел в виду передачу по ссылке не только объектов, а любых переменных.
Я полностью согласен с нововведением разработчиков в пятой версии, где объект всегда должен передаваться по ссылке. Я вот недавно напоролся на очень неприятные грабли с проходом по массиву объектов циклом foreach... эта гадина создает копии, во всяком случае в PHP4.

По поводу ньюзгруппы - спасибо за идею, только я скорее всего не задам вопрос, а поищу в архиве - могу поспорить, что за целый год (вроде уже как год эта фича deprecated) моим вопросом интересовались не раз...
На случай, если такие "бесполезные" вопросы интересуют не только меня, я кину здесь ссылку на архив или цитату.
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

 

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