Przypisanie zwracanej wartości new przez odniesienie jest przestarzałe

Mam tylko błąd.

Kiedy próbuję przypisać taki obiekt:

$obj_md = new MDB2();

Otrzymywany błąd to "przypisanie zwracanej wartości new przez odniesienie jest przestarzałe". Właściwie szukałem rozwiązania, ale jedyne, co widziałem, to odrzucenie polityki php.ini (error_reporting). Też próbowałem, ale nie zadziałało.

To takie zagmatwane..Mam nadzieję, że mi pomożesz. Z góry dzięki.
 61
Author: hakre, 2009-07-06

10 answers

W PHP5 ten idiom jest przestarzały

$obj_md =& new MDB2();

Jesteś pewien, że nie przegapiłeś ampersand w swoim przykładowym kodzie? To wygenerowałoby Ostrzeżenie, które podajesz, ale nie jest wymagane i może zostać usunięte.

Aby dowiedzieć się, dlaczego ten idiom został użyty w PHP4, zobacz na tej stronie podręcznika .

 93
Author: Paul Dixon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-19 17:06:03

Niedawno przeniosłem stronę używając SimplePie ( http://simplepie.org / ) z serwera używającego PHP 5.2.17 do serwera używającego PHP 5.3.2. To było po tym ruchu, że zacząłem otrzymywać listę komunikatów o błędach, takich jak ten:

Deprecated: przypisanie zwracanej wartości new przez odniesienie jest / align = "left" / ../ php / simplepie.inc on line 738

Po przejrzeniu kilku dyskusji na ten temat, wyjaśniłem wszystko, zastępując wszystkie instancje = & new with = new in the simplepie.plik inc.

Nie jestem na tyle doświadczony, aby wiedzieć, czy to będzie działać we wszystkich przypadkach, w których te komunikaty o błędach są odbierane, ale to działało w tym konkretnym przypadku i może warto spróbować.

 26
Author: John Crockford,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-13 04:15:44

Być może konstruktor MDB2 ma jakiś kod, który używa zmiennej $variable = & new ClassName ();

 9
Author: Nitin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-28 11:11:42

Nitin jest poprawny - problem jest w kodzie MDB2.

Zgodnie z zamiennikiem dla Pear: MDB2 na PHP 5.3 możesz zaktualizować MDB2 do wersji SVN dla wersji zgodnej z PHP5.3.

Jako, że odpowiedź została udzielona w marcu 2010 roku i http://pear.php.net/package/MDB2 / pokazuje wydanie kilka miesięcy później, spodziewam się, że obecna wersja MDB2 również rozwiąże problem.

 8
Author: Chris Burgess,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:22

& jest używany w PHP do przekazywania obiektu do metody / przypisywania nowego obiektu do zmiennej przez odniesienie. Jest przestarzały w PHP 5, ponieważ PHP 5 domyślnie przekazuje wszystkie zmienne przez odniesienie.

 7
Author: Jeshurun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-19 23:08:00

Miałem ten sam problem. Miałem już " & " i nadal dawało to samo ostrzeżenie. Używam PHP 5.3 z WAMP i wszystko co zrobiłem to usunąć znak ' & ' i Ostrzeżenie zniknęło.

$obj= new stdClass();  //Without '&' sign.
 6
Author: Vishnu Narang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-29 03:56:16

Wystarczy usunąć new w $obj_md =& new MDB2();

 1
Author: Never Say Die,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-12 08:09:00

Stało się to z powodu PHP 5.3, który jest w pakiecie WAMP 2.0 i, a nie Joomla.

Masz dwa wyjścia, aby to naprawić,

Użyj WAMP 2h (poprzednia wersja) lub Pobierz PHP 5.2.9-2 addon ze strony WAMP.

 0
Author: Shailesh Patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-11 05:19:32

Uaktualnij swój Pear / MDB2 z konsoli:

# pear upgrade MDB2-beta
# pear upgrade MDB2_Driver_Mysql-beta

Problem rozwiązany w wersji 2.5. 0B3

 0
Author: Serhii Koval,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-16 23:11:20
C:\wamp\www\..\libraries\pattemplate

1.ini_set('display_errors', 0);

$this->_modules[$moduleType][$sig]  =&new $moduleClass;   wrong

$this->_modules[$moduleType][$sig]  =new $moduleClass;   Right
 -5
Author: karthic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-30 05:52:28