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. |
|
|
|
seaquest Logika w PHP 20.09.2007, 23:46:56
envp ROTFL
seaquest wstiiid
Narzucać typ można tylk... 21.09.2007, 00:20:00
Jabol @seaquest: no bo to jest logika php. Możesz wymusz... 21.09.2007, 00:26:14
seaquest No właśnie, ja się nie wstydzę.
To jest niekonsekw... 21.09.2007, 00:31:33
Sedziwoj Do tego wymuszenie typu array jest dodane od 5.1 w... 21.09.2007, 07:35:31
Cysiaczek Moim skromnym zdaniem można się jedynie przyczepić... 21.09.2007, 07:40:31
Sedziwoj @Cysiaczek
Nakieruj mnie na dyskusję o sprawdzaniu... 21.09.2007, 11:36:45
Sedziwoj Raczej powinieneś robić:
[PHP] pobierz, plaintext ... 22.09.2007, 14:04:32
Cysiaczek CytatRaczej powinieneś robić:
Nie chodzi... 22.09.2007, 15:14:26
Sedziwoj I tak musi sprawdzać co przekazuje, czy musi spraw... 22.09.2007, 15:29:26
pawel_k @Cysiaczek
ale zobaczy na cos takiego jak jest w p... 22.09.2007, 18:03:44
athabus Brak typowania (zarówno wejścia jak i wyjścia) to ... 24.09.2007, 10:36:43
Ace Dynamiczne typy zawsze były zaletą PHP'a... Zm... 24.09.2007, 14:15:25
athabus Nie mam zamiaru porzucać php ponieważ z mojej pers... 24.09.2007, 14:32:05
Sedziwoj My się domagamy, bo robimy coś "więcej" ... 24.09.2007, 15:06:41
kwiateusz ale przeciążanie jak i typowanie byłoby imo opcjon... 24.09.2007, 20:46:41
Cysiaczek Tylko, że i tak php musiałoby sprawdza... 24.09.2007, 20:51:09
Sedziwoj Cytat(Cysiaczek @ 24.09.2007, 21:51:0... 24.09.2007, 21:48:44 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 01:09 |