![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Przyjaciele php.pl Postów: 790 Pomógł: 7 Dołączył: 6.02.2003 Skąd: Polska Ostrzeżenie: (0%) ![]() ![]() |
Otóż mam sobie metodę klasy Member:
Wywołuję ją w sposób następujący:
I co dostaję? Cytat Argument 1 passed to Member::findByKey() must be an instance of string, string given ... I gdzie tu logika? Dodam tylko, że analogiczna sytuacja dla typu array działa. Daję na Hydepark, bo nie jest to dla mnie problem nie do rozwiązania. Traktuję to raczej jako ciekawostkę. Jak ktoś uzna, że trzeba przenieść, niech przeniesie. Ten post edytował seaquest 20.09.2007, 23:49:02 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Stricte dyskusj to ja nie widziałem - powtarzam tylko słowa developerów, którzy przy okazji komentowania próśb o wymuszanie typów argumentów powiedzieli, że jest to niezgodne z ideą php.
Co do typów wartości zwracanych - nie zgadzam się, że nie ma sensu przy braku takiego samego mechanizmu przy argumentach. Wywołujący funkcję (użytkownik kodu) musi zadbac o poprawne argumenty, ale już to, co otrzyma niekoniecznie musi mu odpowiadać. Dam taki przykład:
Gdyby metoda getData() miała ustalony typ wartości zwracanej, to testy niebyłyby potrzebne. Odpowiedzialnośc spadłaby na metodę getData(), która musiałaby zwracać np. tablicę.
Niweluje to trochę zamętu w kodzie. Ja czasami piszę tak, jakby oba obiekty były umówione co do typu, ale to utrudnia wysledzenie błędu, bo musze go szukać w dwóch obiektach. Omijam zatem testowanie, co może się odbić czkawką przy późniejszyxch zmianach. Gdyby dali mi możliwość wymuszenia typu - od razu miałbym błąd i nie musiałbym odtwarzać procesu, który do niego doprowadził. Tak się dzieje najczęsciej, gdy zwrócona wartość nie wpływa bezpośrednio na kod użytkownika, ale jest jedynie zapamiętana i wykorzystana w jakimś odległym miejscu, albo (o zgrozo!) zapisana. Pozdrawiam. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 03:55 |