PathFinder
ΠΡΡΡΡΡΠΉ ΠΈ ΠΎΡ
ΡΠ΅Π½Π½ΡΠΉ ΡΠΎΡΡΠΈΠ½Π³ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΡΠ°!
- ΠΠ΅Π³ΠΊΠΎ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ Π² Π»ΡΠ±ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΠΊΠ°ΠΊ built-in ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΡΠ°ΠΊ ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°Π΄Π°ΠΏΡΠ΅ΡΠ°
- ΠΡΠΎΡΡΠΎΠΉ ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΠΈΡ, Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π»ΠΈΡΠ½Π΅Π³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°
- ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ
ΠΏΡΠΈ ΡΠ°Π·Π±ΠΎΡΠ΅ ΡΠ°ΠΉΠ»Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ
- ΠΠΎΠ΄ΡΠ²Π΅ΡΠΊΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³Π° Π² phpstorm ΠΈ Π΄ΡΡΠ³ΠΈΡ
IDE
- ΠΠ°ΠΊΡΠΈΠΌΡΠΌ DRY: ΡΠ°Π±Π»ΠΎΠ½Ρ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ
Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
URL ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ ΠΈ Ρ.Π΄., (*1)
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
Π§Π΅ΡΠ΅Π· composer, (*2)
ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π² Π²Π°Ρ composer.json:, (*3)
"require": {
...
"paw34rus/path-finder": "dev-master"
}
ΠΡΠΎΡΡΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΏΠ°ΠΏΠΊΡ Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ, (*4)
PathFinder ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΡ PSR-0, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΎΠ²., (*5)
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΠΈΠΌΠ΅ΡΡ built-in ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ Π°Π΄Π°ΠΏΡΠ΅ΡΠ° Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ /examples, (*6)
ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³Π°
@category,htmlpage [A-Za-zΠ-Π―Π°-ΡΠΡ0-9_\.]+ #Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ ΠΈΠ»ΠΈ ΡΡΡΠ°Π½ΠΈΡΡ
@page [0-9]+ #ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ
@date [0-9]{4}\-[0-9]{1,2}\-[0-9]{1,2} #Π΄Π°ΡΠ° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ 2012-12-12
[Catalog] # Ρ.ΠΊ. ΡΡΡ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ action, ΠΎΠ½ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ index
ANY /
ANY /{page}
ANY /{date}/{page}
ANY /{category}/{page}
ANY /{date}/{category}/{page}
[Pages]
GET /{htmlpage}.html
[Users:regform]
GET /register {name: "Vladimir Makarov", status: "KIA"} # ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ
[Users:register]
POST /register
ΠΡΠΈΠΌΠ΅Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ URL
$url = $router->makeUrl('catalog', [
'page' => 42,
'category' => 'news'
]); // "/news/42"
ΠΡΠΈΠΌΠ΅Ρ ΡΠ°Π·Π±ΠΎΡΠ° URL
$rules = $router->parseUrl('/news/42', 'GET'); // ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠΌ, Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ ΠΈ Ρ.Π΄. ΠΈΠ»ΠΈ NoRouteException