Wpis z mikrobloga

@normanos: odpowiedź nie jest taka prosta jak się wydaje. Orm ułatwiają życie to jest pewne. Niestety w pewnych sytuacjach ich narzut jest zbyt duży w związku z czym tworzy się własne rozwiązania.
  • Odpowiedz
@normanos @ksiak : po a) ORM wg. mnie w PHP to sciema bo wcale nie wprowadzają "twardej" korelacji między danymi a modelem, jest to ściema trochę jak interfejsy w PHP. Kolejna sprawa zależy co klepiemy, jeśli robimy CRM i chcemy dodawać uzytkowników etc to bardzo ułatwi nam sprawę. Kolejna sprawa to design rozwiązania, jeśli mamy anemiczne modele to bez znaczenie czy uzyjemy czystego SQL czy doctrine/entity framework/hibernate. Kolejna sprawa, że
  • Odpowiedz
@ksiak: a ja nie napisałem, że nie zgadzam się z Tobą :)
@qwertyu Języki silnie typowane pozwalają na to by za pomocą modelu określi strukture danych, nie na odwrót. Pracujemy na modelu a to baza się dostosowuje. Tworzy design klasy tak by jak najbardziej odzwierciedlały istote problemu. W PHP martwimy się o typy (mapowanie typu bazy danych na obiekty) i o wiele innych spraw, zapytania tworzone są przy pomocy
  • Odpowiedz
@panjerzyduzomierzy: nie lubię zastanawiać sie co ktoś miał na myśli i czemu zrobił tak dziwne, chociaż może i sprytnie rozwiązanie. Kod nie tylko się pisze ale i tez utrzymuje w dużej części.Widziałem też, wiele "fajnych" rozwiązan które ktos zrobił generycznie i dzięki temu naklepał coś w 15 minut zamiast 2h bo się zastanowił i nie uzył wzorca strategii czy fabryki abstrakcyjnej. Problem się robi kiedy zmieniają sie wymagania a osoby
  • Odpowiedz
@micze: Jak to mogę podpiąć cokolwiek? Jeżeli mam metodę send(ISender $sender, $message) to nie wywołam $x->send($bazaPDO, 'hello world'), bo $bazaPDO nie implements ISender. Nawet jak $bazaPDO będzie miała metodę send()

edit: google nic ciekawego nie znajduje po hasłem "php interfaces suck" :)
  • Odpowiedz
@qwertyu: faktycznie, problem jest taki, ze dowiadujesz się tego w runtimie (chociąż to jest cecha generalnie słabo typowanych języków). Z drugiej strony plustem tego rozwiązania jest tylko to, że ochraniasz się przed przypadkiem kiedy $x->send(ISender sender) a $x->send($user), gdzie $user też ma metodę send, bo inaczej to bez roznicy czy uzyjesz interfejsu czy nie. W praktyce nie jest to niska wartość dodana.
  • Odpowiedz
@micze: Raczej bardziej kluczowe jest tu, że jest to język interpretowany a nie kompilowany a nie jego typowanie. Nie określił bym tego, jako ssanie interfejsów PHP, bo one spełniają swoją funkcję na tyle na ile pozwala im charakter języka.
  • Odpowiedz
@qwertyu: nie ssanie, tylko ściema. Wartość dodana jest bardzo mała. Problem który to rozwiązuje to butelka wody w oceanie czyhających zasadzek które są spowodowane założeniami języka. To troche tak jakby wymienić w starym fordzie pony na nowe, na pełnym wypasie, niby poprawia sytuacje ale ciągle to stary ford ze swoimi mankamentami. Głowym problelm jest to, ze silnik niedomaga.
  • Odpowiedz
jest to ściema trochę jak interfejsy w PHP


@micze: Interface to kontrakt – klasa, która go implementuje, zobowiązuje się posiadać jakiś rodzaj API. W PHP jest to w pełni poprawnie zaimplementowane – jeśli mój Mailer wymaga MessageTemplateInterface i go nie dostanie (w konstruktorze czy metodzie) to PHP wybuchnie. Podobnie jeśli klasa implementująca interface nie będzie posiadała wymaganej metody.
  • Odpowiedz
@micze: BTW, gdzieś widziałem badania pokazujące, że statyczne typowanie rozwiązuje marginalny procent błędów w oprogramowaniu.

Owszem, dla dużych korpo i wielgachnych projektów ten procent może być znaczący, ale w większości przypadków znacznie skuteczniejszą obroną przed błędami są testy jednostkowe.
  • Odpowiedz
@MacDada: Napisałeś to co wydawało mi się, że napisałem a na pewno miałem na myśli. Konkluzja tylko inna, PHP jak Java czy inny C# to produkt i każdy by chciał by każdy feature był killer featurem. Niestety dla mnie to tylko reklama i nie zmienia w żaden sposób stylu kodowania PHP i nie usprawnia żadnych mechanizmów.
  • Odpowiedz
@MacDada: przed błędami tylko zdrowy rozsadek i testy a przede wszystkim czytelny dobry kod są skuteczną bronią. Chodzi raczej o użyteczność danego narzędzia i to co sobą reprezentuje. Nie hejtuje interfejsów w PHP mówie tylko, że mają marginalne znaczenie.
  • Odpowiedz
Napisałeś to co wydawało mi się, że napisałem a na pewno miałem na myśli. Konkluzja tylko inna


@micze: Bardzo możliwe :)

Chodzi raczej o użyteczność danego narzędzia […] mają marginalne
  • Odpowiedz