Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]PHP 5.3 - niezrozumiałe powiadomienie ...
Forum PHP.pl > Forum > Przedszkole
siemieng
Witam - montowałem sobie ostatnio system od nowa, więc tworząc swój lokalny serwer www użyłem nowych wersji php, mysql itd.....

Podczas sprawdzania działania środowiska, na wszystkich projektach, które miałem gotowe i które działały na wcześniejszym php 5.2 bez problemu pojawiły się nowe komunikaty i ostrzeżenia wynikające jak się domyślam z różnic pomiędzy php wersją 5.2 a 5.3. Ze wszystkimi sobie poradziłem z wyjątkiem jednego, który zasiewa mi w ogromnych ilościach ekran:P

Strict Standards: Only variables should be passed by reference in C:\WAMP\htdocs\akwarium\cms\public\core on line 7

Fragment kodu generujący komunikat to:
  1. $_PAGE = array(
  2. 'FILE' => basename(__FILE__),
  3. 'NAME' => reset(explode('.', basename(__FILE__)))
  4. );


Jest to tablica danych pliku strony, ponieważ używam osobnych plików do podstron w połączeniu z przyjaznymi url'ami uzyskanymi z PATH_INFO.

Komunikat dotyczy: reset(explode('.', basename(__FILE__)))
Zauważyłem, że wszystkie pozostałe wystąpienia ostrzeżenia wiążą się także z użyciem funkcji reset lub end w połączeniu z innymi wbudowanymi funkcjami php.

I teraz nie wiem czy takie łączenie funkcji jest błędem, czy da jakoś zapobiec temu komunikatowi, bo nie za bardzo chce mi się zmieniać to we wszystkich całym kodzie, a pisałem używając takiej konstrukcji z racji tego, iż wydawała mi się ona "estetyczna" ...
ucho
Cytat(siemieng @ 23.03.2010, 15:50:23 ) *
pojawiły się nowe komunikaty i ostrzeżenia wynikające jak się domyślam z różnic pomiędzy php wersją 5.2 a 5.3.

Nie, już w php 5.2 występowało to strzeżenie.

Cytat(siemieng @ 23.03.2010, 15:50:23 ) *
Strict Standards: Only variables should be passed by reference in C:\WAMP\htdocs\akwarium\cms\public\core on line 7
Zauważyłem, że wszystkie pozostałe wystąpienia ostrzeżenia wiążą się także z użyciem funkcji reset lub end w połączeniu z innymi wbudowanymi funkcjami php.


Tak samo jest przy np. empty(), argumentem musi być zmienna a nie wynik działania innej funkcji, jeśli chcesz się pozbyć ostrzeżenia będziesz musiał przerobić kod.
erix
Po co chcesz zresetować wskaźnik tablicy, której jest domyślnie na początku?

A wyskakujący błąd jest oczywisty. Funkcje te operują na konkretnej zmiennej, a nie zwracają zmodyfikowaną wartość. Używając tych funkcji na wyrażeniu zamiast na zmiennych, w tym konkretnym przypadku robisz to bez sensu. winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.