![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 14.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich bardzo gorąco.
Nie wiem jak u Was, w innych miejscowościach ale u mnie strasznie parno i pochmurnie zajkby za dosłownie chwilkę miał lunąć deszcz ![]() Siedziałem dzisiaj na labolatorium programowania wizualnego, zastanawiając się jak rozwiązać pewien problem, a do głowy wpadło mi coś zupełnie innego. Z początku uznałem to za bzdurę i poronioną ideę, jednak coraz bardziej się do niej przekonuję - mimo iż nadal uważam ją za nieco bezsensowną. Popędziłem czym prędzej do domu aby sie nią z Wami podzielić. Mam nadzieję, że zainteresuję Was mój pomysł i wesprzecie moją ideę (propozycje zmian, uwagi techniczne), albo wybijecie z głowy ![]() Jak wiemy w PHP nie ma mechanizmu, który pozwoliłby nam na sztywne trzymanie się danego typu danych (np integer). Mój pomysł może to zmienić. Według tego co wymyśliłem, każda zmienna była by obiektem ![]()
albo np:
Ale co dalej? Klasa typy dostarczała by szereg metod, które umożliwiałyby odczytywanie i modyfikowanie wartości, przy czym mogłaby generować wyjątki w momencie gdy np do zmiennej typu int będziemy chcieli zapisać łańcuch znaków.
Dodatkowo planowałem dodać metody konwertujące:
Ale hola, hola... Tzn, że trzeba używać metody getValue, aby wypisać stringa na ekranie? Nie! Może nawet taka metoda nie będzie potrzebna, gdyż:
Prawdopodobnie dałoby się tak samo z integerami i innymi typami danych... Do tego dochodziło by także sprawdzanie typów (+ wyjątki) oraz szereg innych metod, jak np getType() - zwracająca typ zmiennej. Nie wiem natomiast co z tablicami i obiektami - nie zdążyłem jeszcze nad tym pomyśleć ![]() 'mixed'. Bardzo zależy mi na Waszej opinii, szczególnie tych bardziej doświadczonych osób i już teraz bardzo dziękuję za wszelkie komentarze. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 869 Pomógł: 53 Dołączył: 20.10.2003 Skąd: Przeworsk Ostrzeżenie: (0%) ![]() ![]() |
Ale po co komu coś takiego? PHP to język głównie przeznaczony dla stron internetowych, więc IMHO takie narzędzie to zbędny balast.
Jeżeli chcesz definiować w php typ danych to nikt Ci tego nie zabrania, po prostu nie jest to obowiązkowe i dobrze. Podsumowując: utrudnianie sobie życie. -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Zestaw funkcji is_* udostepnia sprawdzanie typu.
Dodatkowo cType i mamy wszystko czego potrzeba. -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Jak już to:
Cytat Nie wiem natomiast co z tablicami i obiektami PHP umożliwia sprawdzanie czy podany parametr jest: tablicą, obiektem (będącym reprezentacją danej klasy/interfaceu) więc nie wiem co chcesz tu robić.Poza tym również uważam to za niepotrzebny pomysł. A jeżeli zależy Ci na silnym typowaniu... zmień technologię - osobiście polecam Jave. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Kolejny głos przeciw pomysłowi.
Nie chodzi mi o rzutowanie typów, ponieważ tego bardzo mi w php brakuje, ale o samą implementację. Rozwiązanie ~Crozin-a znacznie bardziej by mi pasowało, jednak jest to niepotrzebny narzut obiektów. Ścisła kontrola typów ma jedynie wówczas sens, gdy jest kontrolowana przez kompilator/parser, a nie zewnętrzne klasy. -------------------- I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 14.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ale po co komu coś takiego? Wiele osób narzeka na to że w PHP nie ma zgodności typów - nie mam na myśli kontrolę poprzez is_*. Dodatkowo cType i mamy wszystko czego potrzeba. To jakiś dodatek? Jeżeli tak, weź poprawkę na to że nie musi być wszędzie dostępny. Kolejny głos przeciw pomysłowi. Nie chodzi mi o rzutowanie typów, ponieważ tego bardzo mi w php brakuje, ale o samą implementację. Rozwiązanie ~Crozin-a znacznie bardziej by mi pasowało (...). Bardziej zależy mi na ocenie samej idei - sposób w jaki to miało by działać to zupełnie inna sprawa, choć oczywiście wszelkie sugestie są mile widziane. Ścisła kontrola typów ma jedynie wówczas sens, gdy jest kontrolowana przez kompilator/parser, a nie zewnętrzne klasy. Uważam, że to nie ma żadnego znaczenia - i tak błąd dostaniemy dopiero gdy wejdziemy na stronę - bez względu na to co tym zarządza. Sama idea wzorowana trochę na C++ czy .NET, gdzie mamy np Obiekt->Zmienna.Length(); W tym przypadku byloby to poprostu Obiekt->Zmienna->Length(); Ja bym przy tym pozostał ![]() Prosiłem o komentarze - ale nie bezmyślne, tylko takie poparte argumentami. Ten post edytował morpheouss 18.05.2009, 16:10:45 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Podstawowe błędy:
1) W PHP niewiele by to dawało. Nie uzyskasz możłiwości przeciążania metod. Podpowiadanie składni przez różne IDE również nie (zresztą one raczej wolą bazować na komentarzach phpDocumentora) 2) Brak rzutowania na obiekt w tle. Przykładowo mając metodę: Nie miałbym możliwości wykonania kodu Musiałbym:
Jeżeli już chcesz robić coś takiego, IMO lepiej by było zrobić coś na zasadzie: Napisać jakiś skrypt, który byśmy uruchamiali przed wrzuceniem plików na serwer, a ten by taki kod zamieniał na: Ale to by było niewygodne i lepiej by było jakby było w formie pluginu do jakiegoś IDE. Ale i tak uważam, że lepiej pomyśleć nad zmianą narzędzia z PHP na inne jeżeli PHP nie spełnia naszych oczekiwań, bo z tego co wiem, to developerzy PHP nie planują wprowadzić silnego typowania. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Cytat Bardziej zależy mi na ocenie samej idei - sposób w jaki to miało by działać to zupełnie inna sprawa, choć oczywiście wszelkie sugestie są mile widziane. Sama idea jest jak najbardziej słuszna. Ale nie ma sensu na siłę symulować zachowania, które nie jest wbudowane w język kosztem ogromnego narzutu obiektów.Cytat Uważam, że to nie ma żadnego znaczenia - i tak błąd dostaniemy dopiero gdy wejdziemy na stronę - bez względu na to co tym zarządza. W przypadku języków skryptowych tak. Ale jeśli weźmiemy pod uwagę języki kompilowane, wówczas błąd pojawi się podczas kompilacji, a nie w trakcie działania.Dlatego właśnie, że PHP jest tak ubogim językiem, odświeżam wiedzę o .NET, gdzie jest wszystko to, czego w PHP mi brakuje. -------------------- I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 14.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Aby rozjaśnić choć trochę co miałem na myśli przygotowałem małą klasę dla boola:
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat Aby rozjaśnić choć trochę co miałem na myśli przygotowałem małą klasę dla boola: No to taka implementacja jedyne co robi to utrudnia życie. $bool->isFalse() może i wygląda bardziej "pro" niż $bool == false, ale poza tym, że pisze się mniej wygodnie, że działa wolniej (co przy setkach zmiennych w całej aplikacji będzie miało znaczenie) to kompletnie nic nowego nie wnosi. |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 651 Pomógł: 28 Dołączył: 4.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Takie coś nie ma sensu w php, bo jest to za luźny język
![]()
-------------------- Sygnatura niezgodna z regulaminem.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 00:39 |