![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 663 Pomógł: 6 Dołączył: 3.06.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Czy można w PHP wykonać przeciążenie funkcji o tej samej ilości argumentów? Coś w stylu...
-------------------- http://www.berry.nazwa.pl/edico/public_html/index.php ----> under construction
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 657 Pomógł: 125 Dołączył: 29.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
możesz posprawdzać sobie w funkcji (jednej) typ argumenta za pomoca is_string itp. problem będzie, gdy kolejne argumenty beda zupelnie inne w przypadku innego typu pierwszej zmiennej (np. rozna ilosc argumentow), ale na pewno jest to wykonalne.
może jest jakiś prostszy sposób. EDIT: Zobacz to: http://pl.php.net/manual/pl/function.overload.php Ten post edytował radex_p 2.02.2008, 19:31:56 -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 78 Pomógł: 2 Dołączył: 13.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
To co podałeś tyczy się klas.
Co do tematu - nie da się bo PHP za bardzo nie rozróżnia typów. Np. 1 może być cyfrą, ale i zarówno napisem '1' i wartością true. Ten post edytował Snowak 2.02.2008, 20:32:41 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 657 Pomógł: 125 Dołączył: 29.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
is_string, is_float itd. potrafi rozróżnić typ, zobacz do manuala
![]() -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
nie, bo php ciągle kuleje i bardzo daleko mu do porządnego, hermetycznego języka obiektowego
-------------------- eh, co polska wódka to polska wódka
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 566 Pomógł: 18 Dołączył: 23.08.2003 Skąd: Łomża Ostrzeżenie: (0%) ![]() ![]() |
@em1X: nie do końca się z tobą zgodzę.
Jeżeli przekażemy do PHP jakąś zmienną o nieokreślonym typie to PHP przypisze mu typ najbardziej mu pasujący ![]() Od wersji 5.x mamy w PHP rzutowanie typów, które działa całkiem nieźle. Tylko projektanci aplikacji zapominają o nim... np:
zwróci dwa razy true, bo 1 jest liczba, ale nie określiliśmy jej typu więc jest także prawdą. A spróbuj teraz:
W tym wypadku rezultatem działania będzie false, true gdyż wartość $i nie jest liczbą. Pozdrawiam -------------------- *Note: No animals were killed durning the construction of this post.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
Nic nowego nie przekazałeś. Wychodzi z tego tyle, że możesz sobie w jednej funkcji tworzyć dwa bloki niby dwóch różnych funkcji. Ale ile to ma wspólnego z przeciążaniem?
![]() I tak btw. php jest strasznie z tym denerwujące, sobie wymyślili, że jedna zmienna może być jednocześnie liczbą i booleanem. A potem podstawiasz co innego i znowu masz inny typ. A potem z bool'a może Ci się zrobić null, a to 0 a to false. Marzę o chwili kiedy w końcu wprowadzą jakąś hermetyzację, bo samo:
to jednak za mało. Kiedy w końcu integer będzie integerem, a bool boolem. Ten post edytował em1X 2.02.2008, 22:58:19 -------------------- eh, co polska wódka to polska wódka
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 78 Pomógł: 2 Dołączył: 13.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
A jak dla mnie to właśnie brak podziału na typy to najlepsze co może być. Ma się pełną swobodę a to wcale nie stwarza ŻADNYCH problemów. Jedynie pedanci co się uczyli programować w Delphi i C++ i teraz nie mogą się przestawić, narzekają -,- Pewnie wg. Ciebie dzięki temu zwiększyło by się bezpieczeństwo aplikacji, razem z SQL injection... Ale wystarczy umieć logicznie myśleć i można się przed tym bez problemów zabezpieczyć.
Nie dobijaj mnie, człowieku :S |
|
|
![]()
Post
#9
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
A jak dla mnie to właśnie brak podziału na typy to najlepsze co może być. Młody jesteś, jeszcze rośniesz ![]() Brak typowania zmiennych to porażka. Największą konsekwencją tego jest brak polimorfizmu w PHP. Co do projektantów nie umiejących się przestawić. Piszę w PHP już od pięciu lat, od dwóch piszę w Java i uwierz mi, że dopóki w PHP nie pojawi się przynajmniej część normalnych rzeczy dopóty będzie to zabawka. ~GrayHat rzutowanie to nie jest rzecz wprowadzona w PHP5. Było już wcześniej. |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
A jak dla mnie to właśnie brak podziału na typy to najlepsze co może być. Ma się pełną swobodę a to wcale nie stwarza ŻADNYCH problemów. Jedynie pedanci co się uczyli programować w Delphi i C++ i teraz nie mogą się przestawić, narzekają -,- Pewnie wg. Ciebie dzięki temu zwiększyło by się bezpieczeństwo aplikacji, razem z SQL injection... Ale wystarczy umieć logicznie myśleć i można się przed tym bez problemów zabezpieczyć. Nie dobijaj mnie, człowieku :S Na brak logicznego myślenia nie narzekam. Z takim podejściem od razu cofnij się do assemblera, bo przecież skoro z logiką nie masz problemów to pisanie w nim będzie dla Ciebie wygodne i w ogóle. Tak poza tym nigdy nie pisałem w Delphi, natomiast C++ nie lubię. Piszę za to bardzo dużo w Javie. To jest dla mnie język numer 1 jeżeli chodzi o obiektowość i stawiam go na najwyższej półce porównując z nim inne języki. Twój post natomiast świadczy o Twoim programistycznym poziomie skoro wolisz co funkcję pisać kolejne linie walidowania danych:
a nie widzieć logiki takiego rozwiązania
które by po prostu nie zezwoliło na cokolwiek innego poza liczbą całkowitą i wyrzuciło parse error. -------------------- eh, co polska wódka to polska wódka
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 657 Pomógł: 125 Dołączył: 29.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
dobrze by było, gdyby było można ustawić typ zmiennej, lub nie ustawić (uniwersalny). Łącząc atuty obu sposobów dało by to dużo więcej możliwości. Tylko ciekawe jak by to się sprawdzało technologicznie.
-------------------- |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 663 Pomógł: 6 Dołączył: 3.06.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
z tego co wiem to PHP sam dobiera sobie typy, tzn jeśli przypiszemy do tej zmiennej 1 to w pamieci bezie ona przechowywana jako int. Z tego względu chyba nie ma technologicznych przesłanek aby nie móc wymuszać na zmiennej typu. Poprostu algorytm omijałby blok gdzie szuka typu.
A co do PHP jako zabawki... to słyszałem gdzieś, że świat dąży do języków typu "D", kolejnej generacji po "C" (Chyba na wykładach z inżynierii oprogramowania to profesor mówił ale nie jestem pewien bo nie za często na nich bywałwem ![]() Myślę, że jest całkiem nieźle bo działa tak jak powinno
Ten post edytował Black-Berry 3.02.2008, 10:48:49 -------------------- http://www.berry.nazwa.pl/edico/public_html/index.php ----> under construction
|
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 461 Pomógł: 32 Dołączył: 17.09.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Na phpClasses jest hack TypeHinting ... który fajnie emuluje podstawową hermetyzację. Połączyłem go z innego hackami z phpClasses i mam w pełni gotową emulację hermetyzacji, której jedyne czego brakuje to wartości domyślne.
Ogólnie - przejrzyjcie phpClasses tam jest hack pozwalający symulować przeciążenie ![]() ![]() |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
dobrze by było, gdyby było można ustawić typ zmiennej w sumie jest sposób ![]()
-------------------- eh, co polska wódka to polska wódka
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 663 Pomógł: 6 Dołączył: 3.06.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
chciałem tylko dodać, że przy funkcji która bada typ trzeba jednak czasem stosować rzutowanie typu.
-------------------- http://www.berry.nazwa.pl/edico/public_html/index.php ----> under construction
|
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 1 657 Pomógł: 125 Dołączył: 29.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
~em1X - zawsze coś, ale:
to jednak nie to samo co powiedzmy: Kod int $zmienna = 6; // typ int
$zmienna2 = 'abc'; //typ uniwersalny -------------------- |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
-------------------- eh, co polska wódka to polska wódka
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 03:06 |