Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Rzutowanie typów - implementacja routera
starach
post 15.04.2007, 18:30:55
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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
LBO
post 15.04.2007, 18:40:20
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
Go to the top of the page
+Quote Post
starach
post 15.04.2007, 18:49:19
Post #3





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


Dobra dzięki smile.gif
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 tongue.gif
Go to the top of the page
+Quote Post
Sedziwoj
post 15.04.2007, 18:49:40
Post #4





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


Cytat(LBO @ 15.04.2007, 19:40:20 ) *


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.
Go to the top of the page
+Quote Post
starach
post 15.04.2007, 18:55:11
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 ? tongue.gif
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 ? tongue.gif
Wiem ... a przynajmniej tak mi się wydaje ;p

Ten post edytował orglee 15.04.2007, 18:56:04
Go to the top of the page
+Quote Post
LBO
post 15.04.2007, 19:01:48
Post #6





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


Cytat(Sedziwoj @ 15.04.2007, 19:49:40 ) *
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:
Cytat(orglee @ 15.04.2007, 19:55:11 ) *
No jak to co ma wspólnego z routerem ? tongue.gif
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
Go to the top of the page
+Quote Post
Sedziwoj
post 15.04.2007, 19:02:20
Post #7





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


Cytat(LBO @ 15.04.2007, 19:56:13 ) *
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.
Go to the top of the page
+Quote Post
cicik
post 15.04.2007, 19:18:40
Post #8





Grupa: Zarejestrowani
Postów: 219
Pomógł: 5
Dołączył: 18.07.2006
Skąd: Piekary Śląskie

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


Cytat(Sedziwoj @ 15.04.2007, 19:49:40 ) *
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
Go to the top of the page
+Quote Post
LBO
post 15.04.2007, 19:24:56
Post #9





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


Cytat(cicik @ 15.04.2007, 20:18:40 ) *
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 smile.gif

Try Ruby!
Go to the top of the page
+Quote Post
Sedziwoj
post 15.04.2007, 19:37:11
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.
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 02:51