![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 418 Pomógł: 8 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Do utworzenia tego tematu skłoniła mnie lektura artykułu/kursu pod linkiem http://www.apohllo.pl/dydaktyka/ruby/intro/. Fajnie by było jakby w PHP-ie pojawiły się takie elementy jak metaprogramowanie, czy pełna obiektowość, prawda ![]() ![]() Swoją drogą zawsze w PHP brakowało mi: - wielokrotnego dziedziczenia (ech te nawyki z C++...) - wiem że w Symfony są mixin-y, ale dla mnie to półśrodek, - przeciążania operatorów (zdaję sobię sprawę, że przy obecnej metodzie konwersji zmiennych jest to sprawa raczej przegrana) - podobno częściowo zaimplementowane w jakimś rozszerzeniu PECL, ale nigdy mi się nie udało tego w 100% uruchomić, - właściwości (wiem, wiem, są metody __get i __set, ale to znów tylko półśrodek), - takiego zaimplementowania uploadu plików, żeby można było bezproblemowo monitorować postęp wgrywania na serwer (znów - kilka rozwiązań krąży w sieci, ale żadnego nie udało mi się uruchomić, może za głupi jestem...), EDIT: - przestrzenii nazw (zapomniał bym ![]() A, i koniecznie przeczytajcie jak autor tekstu w w/w linku wypowiada się o swoich "przebojach" z PHP. Ręce opadają! Tak to jest jak się człowiek za coś bierze od dupy strony... No i jeszcze jedno - nie programuję ani w Ruby-m, ani w Python-ie. Ten post edytował qqrq 8.04.2008, 12:22:46 -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
- wielokrotnego dziedziczenia (ech te nawyki z C++...) - wiem że w Symfony są mixin-y, ale dla mnie to półśrodek, Bleeeee. Wielodziedziczenie to porażka. Już wiedzę te klasy Validator dziedziczące po Db i po Smarty ![]() - przeciążania operatorów (zdaję sobię sprawę, że przy obecnej metodzie konwersji zmiennych jest to sprawa raczej przegrana) - podobno częściowo zaimplementowane w jakimś rozszerzeniu PECL, ale nigdy mi się nie udało tego w 100% uruchomić, Wiesz po co jest przeciążanie operatorów? Żeby Cię z pracy nie zwolnili.Wystarczy że w aplikacji przeciążysz wszystkie i już nikt się w tym nie połapie. Efekty które daje przeciągnie operatorów można bardzo ładnie osiągnąć implementując wszystkie operacji dla klas jako metody. W Javie jakoś tego nie ma i nikt nie narzeka ![]() - właściwości (wiem, wiem, są metody __get i __set, ale to znów tylko półśrodek), Ot bajer. Co Ci dadzą właściwości?- takiego zaimplementowania uploadu plików, żeby można było bezproblemowo monitorować postęp wgrywania na serwer (znów - kilka rozwiązań krąży w sieci, ale żadnego nie udało mi się uruchomić, może za głupi jestem...). No ale to nie ma związku z PHP. Tak jest skonstruowany protokół HTTP.EDIT: Cytat EDIT: - przestrzenii nazw (zapomniał bym smile.gif ). Będą w 5.3, czyli za jakieś dwa/trzy miesiące.Możesz potestować na snapsach. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Mi php pasuje. Ma wszystko, co trzebam aby byc skryptowym językiem do pisania aplikacji www. Do tych inne języki nadają się słabo ze względu na ich wydajność (np. java).
Wielokrotne dziedziczenie to występek przeciwko prawu naturalnemu i moralności - powinien być karany przez Świątą Inkwizycję OOP. ![]() Pozdrawiam. -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 418 Pomógł: 8 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Bleeeee. Wielodziedziczenie to porażka. Już wiedzę te klasy Validator dziedziczące po Db i po Smarty ![]() Eee tam, ja to bardzo lubiłem w C++. Mogli by to nawet domyślnie wyłączać w php.ini. Taki pomysł. ![]() Wiesz po co jest przeciążanie operatorów? Żeby Cię z pracy nie zwolnili. Wystarczy że w aplikacji przeciążysz wszystkie i już nikt się w tym nie połapie. Efekty które daje przeciągnie operatorów można bardzo ładnie osiągnąć implementując wszystkie operacji dla klas jako metody. Jasne że można. Tak samo można wogóle nie używać klas i tego typu pierdół, nie? Chodzi o wygodę i prostotę. Idą twoim tokiem myślenia można równie dobrze powiedzieć: "Wiesz po co jest PHP? Żeby cię z pracy nie wywalili - napisałeś jakiś gówniany kod i teraz tylko ty umiesz się w nim połapać.". Głupota programistów nie jest dla mnie w tym miejscu argumentem. W Javie jakoś tego nie ma i nikt nie narzeka ![]() A ja se kurna ponarzekam. ![]() Ot bajer. Co Ci dadzą właściwości? Bo są wygodne, eleganckie, przyjemnie się ich używa... No ale to nie ma związku z PHP. Tak jest skonstruowany protokół HTTP. Nie chodzi mi tutaj o zady i walety HTTP. Chodzi o to, że sam stan pliku uploadowanego jest w PHP tak przetrzymywany, że monitorowanie tegoż stanu jest mooocno utrudnione. W PERL-u jakoś można. EDIT:Będą w 5.3, czyli za jakieś dwa/trzy miesiące. Możesz potestować na snapsach. Wot, dobre wieści... ![]() -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Wielodziedziczenie byłoby fajne. Nie mogę dać
class Plugin_Database extends AdoDb extends Main_Plugin { } Tego mi brakuje, bo ale nic nie poradzisz, zrestzą to osbliwy przypadek i z innymi się nie spotkałem :] Niczego więcej mi nie brakuje ![]() -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Cytat Do tych inne języki nadają się słabo ze względu na ich wydajność (np. java). Mylisz pojęcia. Java jest bardzo wydajna, jej wadą jest pamięciożerność. Cytat Wielodziedziczenie byłoby fajne Nie byłoby fajne. Tak jak napisał @mike. Już widzę te potworki, które dziedziczą po czy się da, tylko po to, by w jednym miejscu były wszystkie metody. Mi brakuje: - ścisłej kontroli typów, - deklarowania typu zmiennej przekazywanej do funkcji (teraz jest tylko array oraz nazwa klasy) - nie pamiętam jak się to fachowo nazywa - przeciążania metod (tak jak w Javie lub C#) - domyślnego wywoływania konstruktora rodzica - rzucania wyjątków, zamiast wyświetlania ostrzeżenia/błędu, przez niektóre funkcje wbudowane w PHP A rzeczy, na które czekam to: - przestrzenie nazw - pełne wsparcie dla unikodu Ten post edytował batman 8.04.2008, 18:26:26 -------------------- 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
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 657 Pomógł: 125 Dołączył: 29.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
- przeciążanie operatorów
- przeciążanie funkcji - możliwość (ale nie konieczność) konkretnego określenia typu zmiennej - wielodziedziczenie - enumy - struktury (wiem, że klasy to prawie to samo co struktury, ale jednak.) - przestrzenie nazw Coś tam jeszcze było. Jak mi się przypomni to edytuję posta ![]() Chciałbym także, aby zamiast "->" był inny operator, np kropka ("."). Operator -> jest używany bardzo często, a wpisanie go jest stosunkowo trudne Trochę wymagający jestem ![]() EDIT: Przypomniał mi się fajny bajer. To tylko bajer, ale czasem by się przydał. Chodzi o jakąś strukturę (podobną do np. ifów, switchów itp.), która by pozwalała na pracowanie na jakimś obiekcie. Np: with($ludek){ cos1 = 'test1'; cos2 = 'test2'; cos3 = 'test3'; cos4 = 'test4'; } by było równoważne z: $ludek->cos1 = 'test1'; $ludek->cos2 = 'test2'; $ludek->cos3 = 'test3'; $ludek->cos4 = 'test4'; Ten post edytował radex_p 8.04.2008, 19:19:19 -------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 418 Pomógł: 8 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Do tych inne języki nadają się słabo ze względu na ich wydajność (np. java). A Ruby, Python? Ruby jest o wiele lepiej przemyślany niż PHP (fakt że ma składnię, od której oczopląsu można dostać - to mnie do niego na razie zniechęca). A Python - szybcior. Wielokrotne dziedziczenie to występek przeciwko prawu naturalnemu i moralności - powinien być karany przez Świątą Inkwizycję OOP. ![]() Nie byłoby fajne. Tak jak napisał @mike. Już widzę te potworki, które dziedziczą po czy się da, tylko po to, by w jednym miejscu były wszystkie metody. Eee i tak mnie nie przekonacie. ![]() - przeciążania metod (tak jak w Javie lub C#) Tutaj półśrodkiem (znowu) jest zmienna ilość argumentów funkcji/metody i brak deklarowania typu zmiennej przekazywanej do funkcji/metody. Ten post edytował qqrq 8.04.2008, 20:47:42 -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Cytat Przypomniał mi się fajny bajer. To tylko bajer, ale czasem by się przydał. Chodzi o jakąś strukturę (podobną do np. ifów, switchów itp.), która by pozwalała na pracowanie na jakimś obiekcie. Takie coś można uzyskać dzięki stdClass:
Przypomniałem sobie o jeszcze jednej rzeczy, która czasami doprowadza mnie do szewskiej pasji. Wywalić funkcje include, include_once, require i require_once. Stworzyć jedną funkcję, która będzie dołączać pliki, a najlepiej jeśli pliki będą dołączanie automatycznie (oczywiście należy tak to sprytnie zrobić, by nie stracić na wydajności ![]() -------------------- 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
#10
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Wywalić funkcje include, include_once, require i require_once. Stworzyć jedną funkcję, która będzie dołączać pliki, a najlepiej jeśli pliki będą dołączanie automatycznie (oczywiście należy tak to sprytnie zrobić, by nie stracić na wydajności __autoload()![]() Włączanie plików + autoloader |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 148 Pomógł: 0 Dołączył: 8.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
jak dla mnie to brakuje:
- przestrzenie nazw (ok beda ale na razie nie ma:P) - troszke bardziej scisla kontrola typow, rowniez przy argumentach funkcji to co mi natomiast nie podchodzi: - zbyt duży bałagan jeśli chodzi o nazewnictwo funkcji, kolejność przekazywanych parametrów przy funkcjach z tej samej rodziny (raz trzeba przekazac jaki uchwyt innym razem nie) itp; generalnie niedbalstwo w przejrzystości nazewnictwa funkcji, klas.. - to że standardowe funkcje nie wyrzucają wyjątków tylko WARNINGI, ERRORY itd... skoro zaimplementowano wyjatki to chyba logiczne jest przerobienie dotychczasowych elementów jezyka by je wykorzystywały intensywnie szkoda ze zbyt czesto phpowcy tłumaczą się "zachowaniem kompatybilności ze starszymi wersjami" np przy poruszaniu wyżej wymienionych przeze mnie zagadnień |
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Nie do końca mi o to chodziło. Używanie funkcji do ładowania plików wymaga ode mnie napisanie obsługi tego ładowania plików. A mi zależy na tym, by w "czarodziejski" sposób pliki same się ładowały ![]() Bardzo podoba mi się rozwiązanie zastosowane w ZF, gdzie wystarczy zarejestrować automatyczne ładowanie klas i problem z głowy. Moim marzeniem jest pominięcie tej deklaracji ![]() -------------------- 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
#13
|
|
![]() Grupa: Zarejestrowani Postów: 418 Pomógł: 8 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
szkoda ze zbyt czesto phpowcy tłumaczą się "zachowaniem kompatybilności ze starszymi wersjami" np przy poruszaniu wyżej wymienionych przeze mnie zagadnień Temat stary jak świat, poruszany chociażby przy okazji tematu "jak podchodzić do zupy tagów". Ale masz rację - ja bym też to pchnął w przód i nie patrzył za siebię. Moim marzeniem jest pominięcie tej deklaracji ![]() A nie przesadzasz troszkę? ![]() Ten post edytował qqrq 9.04.2008, 05:20:39 -------------------- |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Odczuwam brak:
- funkcji, która dopisałaby ciąg do początku pliku (teraz trzeba wczytywać plik do pamięci, co jest niezbyt wydajne) - czegoś w rodzaju instrukcji goto w VB - żeby można było sobie skakać po kodzie - żeby funkcją header (albo jakąś inną) można było pzesyłać tablicę $_POST - ułatwiłoby mi to pracę przy skomplikowanych formularzach wieloetapowych ![]() - nie wiem czy są jakieś funkcje, które mogłyby powiedzieć coś na temat zużywanych zasobów. Fajnie byłoby odpalić funkcję, która zwróci czas ostatniego parsowania, zużycia pamięci, zmiennej która zajeła najwięcej pamięci itp. |
|
|
![]()
Post
#15
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Cytat - funkcji, która dopisałaby ciąg do początku pliku (teraz trzeba wczytywać plik do pamięci, co jest niezbyt wydajne) Sie nie da. Cytat - czegoś w rodzaju instrukcji goto w VB - żeby można było sobie skakać po kodzie Zajeb.... i jeszcze funkcji spagetti_code( $html_file, $php_file ), ktora polaczy oba pliki w jeden ------------ Cytat Używanie funkcji do ładowania plików wymaga ode mnie napisanie obsługi tego ładowania plików. A mi zależy na tym, by w "czarodziejski" sposób pliki same się ładowały Straaasznie trudne, raz porzadnie napiszesz i masz (iteratory po katalogach + tokenizer/regexp) i juz. -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#16
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Czytam ten wątek i zaczynam rozumieć dlaczego PHP jest często uważane za śmietnik i piaskownicę dla dzieci.
Przecież część z wymienionych tu rzeczy to pierdoły jakieś. Programowanie polega na tworzeniu czegoś dzięki istniejącym narzędziom. I to miał na myśli (mam nadzieję) autor wątku. Tu chodzi o rzeczy związanych z konstrukcją języka. A Wy walicie .... bo mi jakiejś funkcji brakuje. Jesteś programistą, napisz sobie! To zacznie być problem języka wtedy kiedy on Ci na to nie pozwoli. Do tego momentu problemy szukaj w swoich umiejętnościach. |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 1 657 Pomógł: 125 Dołączył: 29.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Takie coś można uzyskać dzięki stdClass:
Nie do końca o to mi chodziło. Zobacz to:
i to o co mi chodziło: Kod with($ludek){ cos1 = 'test1'; cos2 = 'test2'; cos3 = 'test3'; cos4 = 'test4'; } widzisz różnicę ![]() -------------------- |
|
|
![]()
Post
#18
|
|
![]() Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Cytat widzisz różnicę? Widzę ![]() Zawsze można użyć __set i __get. -------------------- 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
#19
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
a jednak nie widzisz
![]() chodzi o to zeby nie pisac zawsze $this we flashu tak jest (AS) masz cos takiego
a koledzie chodzilo o
-------------------- aplikacje internetowe | Symfony
|
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 246 Pomógł: 31 Dołączył: 13.11.2006 Skąd: się znamy? Ostrzeżenie: (0%) ![]() ![]() |
- rzucania wyjątków, zamiast wyświetlania ostrzeżenia/błędu, przez niektóre funkcje wbudowane w PHP http://pl2.php.net/manual/en/function.set-error-handler.php Odnośnie wydajności Javy: http://www.webhosting.pl/kategorie/program...ie_szybka_jak_c -------------------- Goldenline: Łukasz Rodziewicz
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 10:29 |