новый оператор и ошибка ссылки - PullRequest
0 голосов
/ 16 марта 2012
 $class_name = 'MDB2_Statement_'.$this->phptype;
        $statement = null;
        $obj =& new $class_name($this, $statement, $positions, $query, $types, $result_types, $is_manip, $limit, $offset);

Приведенный выше код устарел, я хотел бы изменить его на что-то вроде

$class_name='MDB2_Statement_'.$this->phptype;
...
$obj_=new class_name($this, $statement, $positions, $query, $types, $result_types, $is_manip, $limit, $offset);
$obj=&$obj_;

Но это не приводит к правильному поведению.Может ли кто-нибудь предложить мне исправление?

[ ОБНОВЛЕНИЕ ], если я оставлю старый код как есть, я столкнусь с некоторыми "устаревшими предупреждениями" на каждой загруженной странице просмотра

Не рекомендуется: Назначение возвращаемого значения new по ссылке не рекомендуется в C: \ xampp \ htdocs ... \ APPLI \ php \ library \ PEAR \ MDB2.php в строке 391

например.

Я открываю этот файл и хотел бы каким-то образом отредактировать его (я не знаю), чтобы Устаревшие ушли.Единственное текущее решение состоит в том, чтобы переустановить XAMPP, который содержит соответствующую версию PHP, чтобы соответствовать той, в которой была написана старая версия. Я в растерянности, чтобы найти какой-либо способ справиться с этими предупреждениями без какой-либо переустановки, наверняка я нене хочу видеть тех, кто устарел в верхней части каждой страницы вообще.Спасибо.

Ответы [ 3 ]

4 голосов
/ 16 марта 2012

PHP жалуется только на следующее:

$obj =& new $class_name...
      ^

Вам больше не нужно и не следует использовать назначение по ссылке , поскольку объекты всегда являются ссылками в PHP 5. Просто избавьтесь от &, и все.

0 голосов
/ 29 ноября 2012

Почему вы даже используете оператор ссылки с объектами? Объект помещается в память, и все связанные с ним переменные изменят свою память.

Другими словами

$a1 = new stdClass;
$a2 = $a1;

будет иметь такой же эффект как:

$a1 = 1000;
$a2 = &$a1;
0 голосов
/ 16 марта 2012

Вы можете создать ссылку на объект в php 5.3.10, используя этот способ.

$firstObj = new something();
$referenceObj = &$firstObj;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...