Witaj, Gościu O nas | Kontakt | Mapa
Wortal Forum PHPEdia.pl Planeta Kubek IRC Przetestuj się!

Phiend: Łańcuchy akcji

Rozpoczynanie łańcucha: "Dopasowanie akcji"

Kiedy nadchodzi żądanie, Phiend musi zadecydować, którą akcję należy uruchomić jako odpowiedź. Ta akcja może później wywołać inne, ale teraz Phiend musi wiedzieć od czego zacząć. Nie ma prostego odwzorowania z adresu wpisanego w pasek przeglądarki. Takie odwzorowanie jest możliwe ze statyczną zawartością HTML-u, gdzie każda strona ma swój niepowtarzalny adres. Ale w przypadku Phiend'a, wszystkie żądania są kierowane do jednego, konkretnego skryptu (który rozpoczyna Phiend'a) i w jakiś sposób żądany URL musi być rozłożony na nazwę akcji.

W tym celu Phiend stosuje "dopasowania". Dopasowanie jest swoistą reguła, która każe uruchamiać daną akcję, jeśli żądanie URL spełnia pewne warunki. Na przykład - konkretna akcja może zostać wybrana, jeśli URL zawiera pewne słowo lub specyficzny parametr GET, zawierający określoną wartość. Możliwości jest wiele, tak samo jak wiele jest różnych typów " dopasowań".

"Dopasowania " precyzowane są osobno dla każdej akcji w pliku konfiguracyjnym. Jedna akcja może mieć wiele zgodności. Są one sprawdzane sekwencyjnie, zaczynając od pierwszej zgodności pierwszej akcji, poprzez drugą zgodność pierwszej akcji, następnie przez zgodności kolejnych akcji, i tak dalej, i tak dalej, aż do ostatniej zgodności ostatniej akcji.

Jeśli wykryta zostanie zgodność, która obliczana jest jako prawdziwa (lub, po prostu jest dopasowana przez żądanie URL), przetwarzanie zostaje zatrzymane, a akcja zawierająca dopasowanie zostaje uruchomiona. Jeśli wszystkie dopasowania zostają wypróbowane i wszystkie okazują się niespełnione, Phiend zgłasza błąd i żadna akcja nie może zostać uruchomiona. Zaleca się projektowanie dopasowań w taki sposób, aby każde żądanie było z do czegoś dopasowane. Z dopasowaniem o nazwie always ("zawsze") jest to naprawdę bardzo proste.

Nie trzeba precyzować dopasowań dla każdej akcji. Posiadanie akcji bez żadnego dopasowania jest całkowicie w porządku. Użytkownik nie będzie wtedy miał bezpośredniego dostępu do tej akcji, niezależnie od tego, co wpisze w pasku adresowym przeglądarki. Jednakże akcja ta może się pojawić później w łańcuchu - może być wywołana przez inną akcję, lub też może zostać skonfigurowana do uruchomienia przez Phiend, kiedy uwierzytelnienie kolejnej akcji okaże się niespełnione.

Notatka

Dostępne rodzaje zgodności to:

Dopasowanie "exactly" obliczane jest jako prawdziwe tylko wtedy, gdy żądanie URL jest dokładnie takie samo jak wartość dopasowania. Porównanie obejmuje specyfikator protokołu (taki jak np. ciąg "http://") oraz jakikolwiek parametr GET dostarczony do skryptu.

<action>
 <name>SomeAction</name>
 <type>logic</type>
 <action-config>
 <fallback-action>SomeOtherAction</fallback-action>
 </action-config>
 <matches>
 <contains>some-action</contains>
 </matches>
</action>

Dopasowanie "contains" obliczane jest jako prawdziwe tylko wtedy, gdy żądanie URL zawiera ciąg określony jako wartość dopasowania.

<action>
 <name>DefaultAction</name>
 <type>logic</type>
 <action-config>
 <fallback-action>SomeOtherAction</fallback-action>
 </action-config>
 <matches>
 <always/>
 </matches>
</action>

Dopasowanie "ereg" obliczone zostaje jako prawdziwe tylko wtedy, gdy żądanie URL jest zgodne z wyrażeniem regularnym, określonym jako wartość dopasowania. Dopasowanie "ereg" jest dosyć wydajne, ale przetwarzanie tych wyrażeń regularnych dla każdego żądania spowalnia nieco twoją aplikację. Dlatego możesz ograniczyć użycie wyrażeń regularnych tylko do sytuacji, gdy nie można uzyskać wyniku z pomocą prostszych zgodności.

<action>
 <name>SomeAction</name>
 <type>logic</type>
 <action-config>
 <fallback-action>SomeOtherAction</fallback-action>
 </action-config>
 <matches>
 <preg>/some-action$/</preg>
 </matches>
</action>

Dopasowanie "preg" jest zasadniczo takie samo, jak "ereg", z tą tylko różnicą, że "preg" używa normalnych wyrażeń kompatybilnych z perl, zamiast wyrażeń POSIX-owych. Możesz wybrać którekolwiek zechcesz.

<action>
 <name>SomeAction</name>
 <type>logic</type>
 <action-config>
 <fallback-action>SomeOtherAction</fallback-action>
 </action-config>
 <matches>
 <get-param name="action">some-action</get-param>
 </matches>
</action>

Dopasowanie "get-param" obliczone zostaje jako prawdziwe tylko wtedy, gdy żądanie URL zawiera parametr GET sprecyzowanej nazwy oraz z określoną wartością. Jest to równoważne z tradycyjnie dynamiczną zawartością, gdzie jest jeden skrypt przetwarzający wszystkie żądania, a wyświetlana strona jest określona na podstawie predefiniowanego parametru GET.

Informacje na podobny temat:
Wasze opinie
Wszystkie opinie użytkowników: (0)
Mentax.pl    NQ.pl- serwery z dodatkiem świętego spokoju...   
O nas | Kontakt | Mapa serwisu
Copyright (c) 2003-2024 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System