Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Fatal error: Can't use method return value in write context
Athlan
post
Post #1





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


Pytanie dotyczy obiektów.

Mam taki kod:

  1. <?php
  2. if($oInput->post('name') === null || empty($oInput->post('name')))
  3. $aErrors[0] = 'Podaj nick!';
  4. ?>


jak widać jest to kawałek validacji formularza. Metoda post() zwraca null w przypadku kiedy klucz podany w jej paramerze nie istnieje w tablicy $_POST, w przeciwnym wypadku zwraca wartość.

O dziwo okazuje się, że to jest niepoprawne. Nigdy takiego błędu nie spotkałem:
Kod
Fatal error: Can't use method return value in write context in ...


Błąd dotyczy empty(). Moszę uzyć takiego zapisu:
  1. <?php
  2. if($oInput->post('name') === null || $oInput->post('name') == '')
  3. $aErrors[0] = 'Podaj nick!';
  4. ?>


Teraz działa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Nie rozumiem, dlaczego nie mogę użyć funkcji empty() dla czegoś co zwraca mi metoda, generalnie jest to zwykla zmienna.

Teoretycznie powinno działać - czego sie przyczepić (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Kolejny bug w php?

--- EDIT ---

to samo zaobserwowałem dla isset()

Ten post edytował Athlan 6.01.2007, 10:29:59
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
mysz
post
Post #2





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 26.08.2006
Skąd: Szczecin

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


isset() i empty() nie są fnkcjami tylko konstrukcjami językowami, więc mają swoje prawa. empty() imo w ogóle nie powinno być używane, wprowadza więcej zamieszania niż pożytku.

A co do samego empty() i Twojego przypadku, to wystarczy zajrzeć do manuala, tam masz wyjaśnienie.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 19:39