Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Czego wam w tym języku brakuje?
qqrq
post
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 questionmark.gif biggrin.gif

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 smile.gif ).

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


--------------------
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
mike
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Cytat(qqrq @ 8.04.2008, 13:17:01 ) *
- 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 tongue.gif
Cytat(qqrq @ 8.04.2008, 13:17:01 ) *
- 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 tongue.gif
Cytat(qqrq @ 8.04.2008, 13:17:01 ) *
- 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?
Cytat(qqrq @ 8.04.2008, 13:17:01 ) *
- 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.
Go to the top of the page
+Quote Post
Cysiaczek
post
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. smile.gif

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.
Go to the top of the page
+Quote Post
qqrq
post
Post #4





Grupa: Zarejestrowani
Postów: 418
Pomógł: 8
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Cytat(mike @ 8.04.2008, 13:26:42 ) *
Bleeeee. Wielodziedziczenie to porażka. Już wiedzę te klasy Validator dziedziczące po Db i po Smarty tongue.gif


Eee tam, ja to bardzo lubiłem w C++. Mogli by to nawet domyślnie wyłączać w php.ini. Taki pomysł. tongue.gif

Cytat(mike @ 8.04.2008, 13:26:42 ) *
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.

Cytat(mike @ 8.04.2008, 13:26:42 ) *
W Javie jakoś tego nie ma i nikt nie narzeka tongue.gif


A ja se kurna ponarzekam. guitar.gif

Cytat(mike @ 8.04.2008, 13:26:42 ) *
Ot bajer. Co Ci dadzą właściwości?


Bo są wygodne, eleganckie, przyjemnie się ich używa...

Cytat(mike @ 8.04.2008, 13:26:42 ) *
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.

Cytat(mike @ 8.04.2008, 13:26:42 ) *
EDIT:Będą w 5.3, czyli za jakieś dwa/trzy miesiące.
Możesz potestować na snapsach.


Wot, dobre wieści... guitar.gif


--------------------
Go to the top of the page
+Quote Post
bim2
post
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 snitch.gif Wszystko jest, aby porządnie napisać działającą stronę WWW. No jedynie ten upload plikow, ale jak powiedział Pan Mike nie od php to zależy.


--------------------
Go to the top of the page
+Quote Post
batman
post
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.
Go to the top of the page
+Quote Post
.radex
post
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 winksmiley.jpg

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 tongue.gif

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


--------------------
blog | Tadam — minutnik do Pomodoro na Maka :)
Go to the top of the page
+Quote Post
qqrq
post
Post #8





Grupa: Zarejestrowani
Postów: 418
Pomógł: 8
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Cytat(Cysiaczek @ 8.04.2008, 13:52:47 ) *
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.

Cytat(Cysiaczek @ 8.04.2008, 13:52:47 ) *
Wielokrotne dziedziczenie to występek przeciwko prawu naturalnemu i moralności - powinien być karany przez Świątą Inkwizycję OOP. smile.gif


Cytat(batman @ 8.04.2008, 19:26:06 ) *
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. aarambo.gif


Cytat(batman @ 8.04.2008, 19:26:06 ) *
- 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


--------------------
Go to the top of the page
+Quote Post
batman
post
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:
  1. <?php
  2. $obj = new stdClass();
  3. $obj->var1 = 'a';
  4. $obj->var2 = 'b';
  5. $obj->var2 = 'c';
  6.  
  7. echo $obj->var2;
  8. ?>


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 winksmiley.jpg ).


--------------------
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.
Go to the top of the page
+Quote Post
mike
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Cytat(batman @ 8.04.2008, 22:00:43 ) *
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 winksmiley.jpg ).
__autoload()

Włączanie plików + autoloader
Go to the top of the page
+Quote Post
gam3r
post
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ń
Go to the top of the page
+Quote Post
batman
post
Post #12





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Cytat(mike @ 8.04.2008, 22:28:25 ) *

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 winksmiley.jpg
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 winksmiley.jpg


--------------------
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.
Go to the top of the page
+Quote Post
qqrq
post
Post #13





Grupa: Zarejestrowani
Postów: 418
Pomógł: 8
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Cytat(gam3r @ 8.04.2008, 22:29:54 ) *
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ę.

Cytat(batman @ 8.04.2008, 22:43:54 ) *
Moim marzeniem jest pominięcie tej deklaracji winksmiley.jpg


A nie przesadzasz troszkę? smile.gif Jakaś kontrola dołączania plików musi być, a __autoload to bardzo fajne rozwiązanie.

Ten post edytował qqrq 9.04.2008, 05:20:39


--------------------
Go to the top of the page
+Quote Post
Pilsener
post
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 smile.gif
- 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.
Go to the top of the page
+Quote Post
dr_bonzo
post
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.
Go to the top of the page
+Quote Post
mike
post
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.
Go to the top of the page
+Quote Post
.radex
post
Post #17





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

Ostrzeżenie: (0%)
-----


Cytat(batman @ 8.04.2008, 22:00:43 ) *
Takie coś można uzyskać dzięki stdClass:
  1. <?php
  2. $obj = new stdClass();
  3. $obj->var1 = 'a';
  4. $obj->var2 = 'b';
  5. $obj->var2 = 'c';
  6.  
  7. echo $obj->var2;
  8. ?>


Nie do końca o to mi chodziło.

Zobacz to:

  1. <?php
  2. $obj = new stdClass();
  3. $obj->var1 = 'a';
  4. $obj->var2 = 'b';
  5. $obj->var2 = 'c';
  6. ?>


i to o co mi chodziło:

Kod
with($ludek){
cos1 = 'test1';
cos2 = 'test2';
cos3 = 'test3';
cos4 = 'test4';
}


widzisz różnicę smile.gif ?


--------------------
blog | Tadam — minutnik do Pomodoro na Maka :)
Go to the top of the page
+Quote Post
batman
post
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ę winksmiley.jpg

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.
Go to the top of the page
+Quote Post
AxZx
post
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 smile.gif

chodzi o to zeby nie pisac zawsze $this
we flashu tak jest (AS)

masz cos takiego
  1. <?php
  2. $obiekt = new Obiekt;
  3. $obiekt->add('nowy');
  4. $obiekt->resize();
  5. $obiekt->save();
  6. ?>


a koledzie chodzilo o
  1. <?php
  2. with($obiekt){
  3. add('nowy');
  4. resize();
  5. save();
  6. }
  7. ?>


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
empathon
post
Post #20





Grupa: Zarejestrowani
Postów: 246
Pomógł: 31
Dołączył: 13.11.2006
Skąd: się znamy?

Ostrzeżenie: (0%)
-----


Cytat(batman @ 8.04.2008, 19:26:06 ) *
- 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
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 10:29