Forum Webscript.Ru

Программирование => PHP => Тема начата: Aku Aku от 03 Апреля 2004, 19:41:57

Название: Передача параметров в PHP 4.3.x (использовать ли &)
Отправлено: Aku Aku от 03 Апреля 2004, 19:41:57
Нужно ли в PHP 4.3.x использовать & для передачи параметра по ссылке, например:


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

или это было актуально для ранних версий а теперь автоматом передается по ссылке?
Название: Передача параметров в PHP 4.3.x (использовать ли &)
Отправлено: PyJIeT от 04 Апреля 2004, 10:26:18
Нужно!Но не надо его ставить повсеместо.
Название: Передача параметров в PHP 4.3.x (использовать ли &)
Отправлено: Макс от 04 Апреля 2004, 12:06:29
Aku Aku
так писать не надо:
$myclass = new MyClass(&$db);

писать надо так:
 class MyClass {
  ......
  function MyClass (&$db) { // имено благодаря этой строке будет происходить передача объекта по ссылке
   .....
  }
.....
}
$myclass = & new MyClass($db); // вот так объект передается по ссылке
Название: Передача параметров в PHP 4.3.x (использовать ли &)
Отправлено: Aku Aku от 04 Апреля 2004, 12:25:32
спасибо за ответы. ясно.
буду перелопачивать код и вставлять амперсанды :-)
Название: Передача параметров в PHP 4.3.x (использовать ли &)
Отправлено: Макс от 04 Апреля 2004, 12:33:18
кстати, я кое-что забыл :

class MyClass {
  var $db;
  ......
  function MyClass (&$db) { // имено благодаря этой строке будет происходить передача объекта по ссылке
   $this->db = &$db; // эта строка тоже важна.
   .....
  }
.....
}
Название: Передача параметров в PHP 4.3.x (использовать ли &)
Отправлено: FreeSpace от 04 Апреля 2004, 19:00:52
Я снова влезу с оффтопиком, но на вопрос автора вроде уже ответили, а мой вопрос всё же не так далек от темы:
Вы не в курсе, почему это передача аргумента по ссылке при вызове функции/метода была объявлена deprecated? Не то чтобы меня это очень беспокоило, просто любопытно...
Название: Передача параметров в PHP 4.3.x (использовать ли &)
Отправлено: Макс от 05 Апреля 2004, 13:52:23
FreeSpace
ты про
$myclass = new MyClass(&$db);
?

ИМХО это неправильно, если в функцию/метод можно будет передавать параметры как по ссылке (MyClass(&$db); ) так и по значению (MyClass($db); ). Четко объяснить не могу - интуитивно чувствую, что можно на скрытые баги в скрипте натолкнуться.
А вообще, можешь такие вопросы задать прямо разработчикам
http://news://news.php.net
Название: Передача параметров в PHP 4.3.x (использовать ли &)
Отправлено: FreeSpace от 05 Апреля 2004, 20:19:46
Макс
Да, я именно про это и говорил.
Но я имел в виду передачу по ссылке не только объектов, а любых переменных.
Я полностью согласен с нововведением разработчиков в пятой версии, где объект всегда должен передаваться по ссылке. Я вот недавно напоролся на очень неприятные грабли с проходом по массиву объектов циклом foreach... эта гадина создает копии, во всяком случае в PHP4.

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