![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Czytałem trochę w internecie o klasach router które uruchamiają poszczególne akcje na stronie w zależności od przekazanych parametrów. Problem polega na tym że nie zrozumiałem do końca zapisu ( tak prawdę mówiąc to nie chciało mi się czytać jakichś 90 linijek wodolejstwa ): eeee no to mam problem bo nie mogę tego znaleźć ... W każdym razie było to coś na wzór rzutowania typu w metodzie i wyglądało to tak jakby typ był interfejsem. Natomiast do metody przekazywano obiekt. Mógłby ktoś przykładowym kodem zarzucić, bo niestety ten mój tępy mózg nie pamięta jak to wyglądało. Aha reasumując te moje powyższe wypociny chciałbym się zapytać czy dobrze mi się wydaje ... że rzutowanie typu na interfejs miało zapobiec przekazaniu do metody innych obiektów niż takie które są zgodne z danym interfejsem? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Type Hinting
edit: Tylko, co to ma wspólnego z Routerem. Chodzi Tobie o wyjaśnienie budowy zwyczajnej konstrukcji językowej. Temat wprowadza w błąd. Ten post edytował LBO 15.04.2007, 18:42:16 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Dobra dzięki
![]() Nie wiedziałem jak to opisać już nie mówiąc o podaniu nazwy tematu. Znalazłem ten artykuł przeszukując forum parę dni temu tylko że nie pamiętam jaką frazę wprowadziłem a było ich kilka ![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ja się zastanawiałem czy nie opakować podstawowe w obiekty, aby przyjmować tylko obiekty, ale to pewnie by rozwaliło wydajność :| (tylko że można by było np. nazwa->lenght() lol) Cytat edit: Tylko, co to ma wspólnego z Routerem. Chodzi Tobie o wyjaśnienie budowy zwyczajnej konstrukcji językowej. Temat wprowadza w błąd. Ja też, jakoś nic o tym nie czytałem, a problem jest dość zawile przedstawiony. -------------------- Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
No jak to co ma wspólnego z routerem ?
![]() Uruchamiasz akcje za pomocą danej metody do której przekazujesz obiekt. Masz klasę news, artykuły i o sobie Ruter przechwyca parametry z urla po czym uruchamia odpowiednią akcję chodzi o to że w powyższych klasach były takie same metody, które były by uruchamiane z klasy router. edit> Cytat No jak to co ma wspólnego z routerem ? Wiem ... a przynajmniej tak mi się wydaje ;p
![]() Ten post edytował orglee 15.04.2007, 18:56:04 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ja się zastanawiałem czy nie opakować podstawowe w obiekty, aby przyjmować tylko obiekty, ale to pewnie by rozwaliło wydajność :| (tylko że można by było np. nazwa->lenght() lol) Właśnie po to jest rzutowanie typów argumentów. Ale, jak sugerujesz, tworzenie obiektów z już istniejących typów danych jest niepotrzebne. Dodać kilka linijek kodu z is_int()" title="Zobacz w manualu PHP" target="_manual, is_array()" title="Zobacz w manualu PHP" target="_manual etc., to nie problem, a przynajmniej można obsłużyć wynikłe z tego powodu - argument niepożądanego typu - błędy. edit: No jak to co ma wspólnego z routerem ? ![]() Uruchamiasz akcje za pomocą danej metody do której przekazujesz obiekt. Masz klasę news, artykuły i o sobie Ruter przechwyca parametry z urla po czym uruchamia odpowiednią akcję chodzi o to że w powyższych klasach były takie same metody, które były by uruchamiane z klasy router. edit> Wiem ... a przynajmniej tak mi się wydaje ;p Sorry, ale Ty przedstawiasz 2 różne problemy: 1. Jak wygląda konstrukcja rzutowania typów w funckjach/metodach? 2. Implementacja Routera z użyciem rzutowania typów. Czepie się drugiego punktu - routerów w PHP jest mrowie i pytanie się na forum o to - tak jakby to była jedyna i słuszna, znana przez wszystkich implemetacja - jak to jest zrobione, co najmniej mnie dziwi. Zarzuć kodem, to można podyskutować. edit: I jeszcze jedno... Router nie uruchamia akcji, on tylko pobiera parametry żądania - nazwy(modułu, ) kontrolera i akcji oraz dodatkowe zmienne. Wywoływaniem akcji zajmuje się dispatcher. Ten post edytował LBO 15.04.2007, 19:04:29 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Właśnie po to jest rzutowanie typów argumentów. Ale, jak sugerujesz, tworzenie obiektów z już istniejących typów danych jest niepotrzebne. Dodać kilka linijek kodu z is_int()" title="Zobacz w manualu PHP" target="_manual, is_array()" title="Zobacz w manualu PHP" target="_manual etc., to nie problem, a przynajmniej można obsłużyć wynikłe z tego powodu - argument niepożądanego typu - błędy. Wiesz, ale tak nikt nie użyje tego co nie trzeba, a pilnowanie typów zwalasz na obiekt który ma odpowiadać danemu. To by powodowało błąd przy wywoływaniu funkcji/metody, no i by prowadziło do większej obiektowości, no ale wydajność chyba tu zwycięża. To powinni od razu w język wprowadzić (tzn. od 5 aby dało się typizacje argumentów każdego typu... no ale wiem że to jest związane z sposobem obsługi... i nie jest proste). A co z tym routerem? EDIT A to już coś wyjaśnia... Po prostu musisz ustalić sposób przekierowania, jakie dane wejściowe prowadzą do jakiego kontrolera. I jak napisał LBO jest wiele implementacji. Ten post edytował Sedziwoj 15.04.2007, 19:05:57 -------------------- Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 219 Pomógł: 5 Dołączył: 18.07.2006 Skąd: Piekary Śląskie Ostrzeżenie: (0%) ![]() ![]() |
Ja się zastanawiałem czy nie opakować podstawowe w obiekty, aby przyjmować tylko obiekty, ale to pewnie by rozwaliło wydajność :| (tylko że można by było np. nazwa->lenght() lol) Ja też, jakoś nic o tym nie czytałem, a problem jest dość zawile przedstawiony. Ja też nad tym myślę od dłuższego czasu. Bardzo mnie irytuje brak typizacji dla typów wbudowanych. Jest to uciążliwe przy robieniu dokumentacji i kontrolowaniu czy coś jest tym czym ma być. Od wprowadzenia tego w życie nie powstrzymuje mnie wydajność bo wydaje mi się, że narzut nie byłby duży. Natomiast brakowałoby mi wbudowanej konwersji typu wbudowanego na mój i odwrotnie. Musiałbym wszędzie pisać new Integer(5) zamiast przekazać po prostu 5 do metody a konwersja już by zrobiła z tego obiekt klasy Integer. Pod tym względem MS w C# zrobił mistrzostwo świata. Sama idea, że wszystko jest obiektem i dziedziczy po Object jest cudowna. Dzięki czemu jeśli mam taką potrzebę to mogę napisać metodę, która przyjmuje wszystko. No ale niestety w PHP tego nie ma - oby kiedyś się pojawiło. -------------------- CMS dla Twojej firmy
Wojciech Małota |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Pod tym względem MS w C# zrobił mistrzostwo świata. Sama idea, że wszystko jest obiektem i dziedziczy po Object jest cudowna. Dzięki czemu jeśli mam taką potrzebę to mogę napisać metodę, która przyjmuje wszystko. No ale niestety w PHP tego nie ma - oby kiedyś się pojawiło. To w takim razie sprawdź Ruby ![]() Try Ruby! |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Może zaczniecie od innych języków, bo Java też ma drzewo typów z jednym korzeniem a była wcześniej niż C# czy Ruby. A może nawet było coś wcześniej z taką strukturą typów. (co prawda Java posiada typy podstawowe, które wszystko psują :|)
EDIT, zapomniałem napisać o dacie powstania <lol> Ten post edytował Sedziwoj 15.04.2007, 19:38:21 -------------------- Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 02:51 |