Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]PHP 5.3 - niezrozumiałe powiadomienie ..., Strict Standards: Only variables should be passed by reference
siemieng
post
Post #1





Grupa: Zarejestrowani
Postów: 101
Pomógł: 7
Dołączył: 16.01.2007

Ostrzeżenie: (0%)
-----


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" ...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
ucho
post
Post #2





Grupa: Zarejestrowani
Postów: 300
Pomógł: 32
Dołączył: 31.07.2006

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
erix
post
Post #3





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 09:16