рд╣рд╛рд▓ рд╣реА рдореЗрдВ,
рд╕рд┐рд▓реЗрдХреНрд╕ рдорд┐рдиреА-рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛: рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрддрдирд╛ рдЬрдЯрд┐рд▓ рдХреНрдпрд╛ рд╣реИ? рдореИрдВрдиреЗ рдХреБрдЫ рдРрд╕рд╛ рд╣реА рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ред
рдРрд╕реЗ рдорд┐рдиреА-рдлреНрд░реЗрдо рдЖрдорддреМрд░ рдкрд░ mod_rewrite рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рдпрдореЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ:
Copy Source | Copy HTML < IfModule mod_rewrite . c > RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [QSA,L] </ IfModule >
Copy Source | Copy HTML < IfModule mod_rewrite . c > RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [QSA,L] </ IfModule >
Copy Source | Copy HTML < IfModule mod_rewrite . c > RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [QSA,L] </ IfModule >
Copy Source | Copy HTML < IfModule mod_rewrite . c > RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [QSA,L] </ IfModule >
Copy Source | Copy HTML < IfModule mod_rewrite . c > RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [QSA,L] </ IfModule >
Copy Source | Copy HTML < IfModule mod_rewrite . c > RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [QSA,L] </ IfModule >
Copy Source | Copy HTML < IfModule mod_rewrite . c > RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [QSA,L] </ IfModule >
Copy Source | Copy HTML < IfModule mod_rewrite . c > RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [QSA,L] </ IfModule >
рд╡реЗ рдХрд┐рд╕реА рднреА рдЕрдиреБрд░реЛрдз рдХреЛ index.php рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдлреНрд░реЗрдорд╡рд░реНрдХ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ рдФрд░ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рд╣рдо рдкрддреЗ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВрдЧреЗ:
Copy Source | Copy HTML
- рдлрд╝рдВрдХреНрд╢рди рдЕрдиреБрд░реЛрдз ( $ рдкрде , $ рдХреЙрд▓рдмреИрдХ )
- {
- рдЕрдЧрд░ ( $ рдкрде == $ _SERVER [ 'REQUEST_URI' ]) рдХреЙрд▓ call_user_func ( $ рдХреЙрд▓рдмреИрдХ );
- }
рдЬрдм рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдЙрд╕ рдкрддреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдерд╛, рдФрд░ рдпрджрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд╛рд╕ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХреЙрд▓рдмреИрдХ рдХрд╣рддрд╛ рд╣реИред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреЛрдИ рдПрдХ рдЖрд╡рд╢реНрдпрдХ рдЪреАрдЬ рдирд╣реАрдВ рд╣реИ - рдПрдХ рдкрддреЗ рд╕реЗ рдЪрд░ рдирд┐рдХрд╛рд▓рдирд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛,
example.com/something рдФрд░
example.com/something рдкрддреЛрдВ рдХреЛ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдк рдкрддреЗ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдХреЗ рдФрд░ array_filter рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
Copy Source | Copy HTML
- рд╕рдорд╛рд░реЛрд╣ array_filter_callback_no_empty_str ( $ рдореВрд▓реНрдп )
- {
- $ рдореВрд▓реНрдп рд▓реМрдЯрд╛рдПрдБ ! = '' ;
- }
- рдлрд╝рдВрдХреНрд╢рди рдЕрдиреБрд░реЛрдз ( $ рдкрде , $ рдХреЙрд▓рдмреИрдХ )
- {
- // рдХреЙрд▓рдмреИрдХ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд░ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ
- $ args = array ();
- // рдЙрд╕ рдкрддреЗ рдХреЛ рддреЛрдбрд╝реЗрдВ рдЬрд┐рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ (URI) рднрд╛рдЧреЛрдВ рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдерд╛
- $ uri = рд╡рд┐рд╕реНрдлреЛрдЯ ( '/' , $ _SERVER [ 'REQUEST_URI' ]);
- // рдХреНрд╡реЗрд░реА рдкрде рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рд╣реА рдХрд░реЗрдВ
- $ рдкрде = рд╡рд┐рд╕реНрдлреЛрдЯ ( '/' , $ рдкрде );
- // рджреЛрдиреЛрдВ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдЦрд╛рд▓реА рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ
- $ uri = array_values тАЛтАЛ(array_filter ( $ uri , array_filter_callback_no_empty_str));
- $ рдкрде = array_values тАЛтАЛ(array_filter ( $ рдкрде , array_filter_callback_no_empty_str));
- // рдпрджрд┐ рдпреВрдЖрд░рдЖрдИ рдФрд░ рдкрде рдореЗрдВ рднрд╛рдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИ, рддреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ
- рдЕрдЧрд░ (рдЧрдгрдирд╛ ( $ uri )! = рдЧрд┐рдирддреА ( $ рдкрде ))
- рдЭреВрдареЗ рд▓реМрдЯрдирд╛ ;
- // рд╣рдо рдЕрдиреБрд░реЛрдз рдкрде рдХреЗ рд╕рднреА рднрд╛рдЧреЛрдВ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ
- рдХреЗ рд▓рд┐рдП ( $ i = 0 ; $ i <рдЧрд┐рдирддреА ( $ рдкрде ); $ i ++)
- {
- // рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдкрде рдХрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдПрдХ рдЪрд░ рд╣реИ
- // рдЪрд░ рдкрде рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реИрдВ, рдЬреЛ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ
- рдЕрдЧрд░ (preg_match ( '| ^ \ {(ред *) \} $ |' , $ рдкрд╛рде [ $ i ], $ рдорд╛рдЪрд┐рд╕ )
- {
- // рдпрджрд┐ рд╣реИ, рддреЛ рдЗрд╕ рдЪрд░ рдХреЛ рд╕рд░рдгреА рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
- $ args [ $ рдореИрдЪ [ 1 ]] = $ uri [ $ i ];
- }
- рдЕрдиреНрдпрдерд╛
- {
- // рдпрджрд┐ рдЕрдиреБрд░реЛрдз рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдирд╣реАрдВ рд╣реИ, рддреЛ рдмрд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде URI рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ
- // рдпрджрд┐ рд╡реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ рд╣реИрдВ, рддреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ
- рдЕрдЧрд░ ( $ uri [ $ i ]! = $ path [ $ i ])
- рдЭреВрдареЗ рд▓реМрдЯрдирд╛ ;
- }
- }
- // рд╕рднреА рдЬрд╛рдВрдЪреЛрдВ рдХреЗ рдмрд╛рдж, рд╣рдо рдХреЙрд▓рдмреИрдХ рдХрд╣рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдЕрдиреБрд░реЛрдз рдЪрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рджреЗ рд░рд╣реЗ рд╣реИрдВ
- рд╡рд╛рдкрд╕реА call_user_func_array ( $ рдХреЙрд▓рдмреИрдХ , $ args );
- }
рдЕрдм рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
Copy Source | Copy HTML
- рд╕рдорд╛рд░реЛрд╣ рдирдорд╕реНрдХрд╛рд░ ( $ рдХреМрди )
- {
- рдкреНрд░рд┐рдВрдЯ "рд╣реИрд▓реЛ, $ рдХреМрди" ;
- }
- рдЕрдиреБрд░реЛрдз ( '/ рд╣реИрд▓реЛ / {рдХреМрди}' , рд╣реИрд▓реЛ);
рдЕрдм, Silex рдХреЛ рджреЗрдЦреЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдо рдХреНрдпрд╛ рдпрд╛рдж рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпреЗ рджрд╛рд╡реЗ (рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдЦрд┐рд▓рд╛рдл рдкрде рдЪрд░ рдХреА рдЬрд╛рдБрдЪ), рдХреЙрд▓ рд╡рд┐рдзрд┐ (GET, POST, PUT, рдЖрджрд┐) рдФрд░ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдореЙрдбрд▓ рдХреА рдЬрд╛рдБрдЪ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдкрд╣рд▓реЗ рджреЛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИрдВ, рдЖрдкрдХреЛ рдмрд╕ рдХреБрдЫ рдЬреЛрдбрд╝реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ:
Copy Source | Copy HTML
- рдлрд╝рдВрдХреНрд╢рди рдЕрдиреБрд░реЛрдз ( $ рдкрджреНрдзрддрд┐ , $ рдкрде , $ рдХреЙрд▓рдмреИрдХ , $ рдореБрдЦрд░ = рд╕рд░рдгреА ())
- {
- // рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред
- // рдпрджрд┐ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдзрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреА рдЧрдИ рд╣реИ рдФрд░ рдпрд╣ рдЙрд╕ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреА рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ
- if ( $ рдкрджреНрдзрддрд┐ ! = '' && strtolower ( $ _SERVER [ 'REQUEST_METHOD' ])! = $ рдкрджреНрдзрддрд┐ )
- рдЭреВрдареЗ рд▓реМрдЯрдирд╛ ;
- <...>
- // рдЕрдм рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рдкрде рдХрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рднрд╛рдЧ рдПрдХ рдЪрд░ рд╣реИ рдпрд╛ рдирд╣реАрдВ
- рдЕрдЧрд░ (preg_match ( '| ^ \ {(ред *) \} $ |' , $ рдкрд╛рде [$ i], $ рдорд╛рдЪрд┐рд╕ )
- {
- // рдпрджрд┐ рдпрд╣ рд╣реИ, рддреЛ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ,
- // рдФрд░ рдЕрдЧрд░ рд╡рд╣рд╛рдБ рд╣реИ, рддреЛ рд╣рдо рдпреВрдЖрд░рдЖрдИ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рднрд╛рдЧ рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ
- рдЕрдЧрд░ ( isset ( $ asserts [ $ match [ 1 ]])) || preg_match ( $ asserts [ $ match [ 1 ]], $ uri [$ i]))
- {
- // рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рд╣реИ, рддреЛ рдЗрд╕ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рдЗрд╕рдХреЗ рдорд╛рди рдХреЗ рд╕рд╛рде рд╕рд░рдгреА рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
- $ args [ $ рдореИрдЪ [ 1 ]] = $ uri [$ i];
- }
- рдЕрдиреНрдпрдерд╛
- {
- // рдпрджрд┐ рдорд╛рди рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ
- рдЭреВрдареЗ рд▓реМрдЯрдирд╛ ;
- }
- }
- <...>
- }
рд╣рд╛рд▓рд╛рдВрдХрд┐, рджреВрд╕рд░рд╛ рднреА рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИред рд╣рдо рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ $ рд╡рд┐рдзрд┐, $ рдкрде, $ рдХреЙрд▓рдмреИрдХ рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗ, рдореБрдЦрд░ рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХ рдЕрд▓рдЧ рдЖрд╡рд░рдг рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдФрд░ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд░рди () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдЙрдкрд░реЛрдХреНрдд рдЪрд░ рдХреЗ рд▓рд┐рдП $ -> рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реБрдП:
Copy Source | Copy HTML
- рдХрдХреНрд╖рд╛ рдЕрдиреБрд░реЛрдз
- {
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ $ рд╡рд┐рдзрд┐ ; // рдЕрдиреБрд░реЛрдз рд╡рд┐рдзрд┐ (GET, POST, PUT, рдЖрджрд┐)
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ $ рдкрде ; // рдЕрдиреБрд░реЛрдз рдкрде
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ $ рдХреЙрд▓рдмреИрдХ ; // рдХреЙрд▓рдмреИрдХ
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ $ asserts = array (); // рдкрде рдЪрд░ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐
- // рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд╛рд░реНрдп __construct ( $ рдкрджреНрдзрддрд┐ , $ рдкрде , $ рдХреЙрд▓рдмреИрдХ )
- {
- $ рдпрд╣ -> рд╡рд┐рдзрд┐ = рд╕реНрдЯреНрд░реЗрдЯреЛрд▓реЙрд╡рд░ ( $ рд╡рд┐рдзрд┐ );
- $ рдпрд╣ -> рдкрде = $ рдкрде ;
- $ рдпрд╣ -> рдХреЙрд▓рдмреИрдХ = $ рдХреЙрд▓рдмреИрдХ ;
- }
- // рдирд╛рдо рдХреЗ рдкрде рдЪрд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП regex рдЬреЛрдбрд╝реЗрдВ
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдорд╛рд░реЛрд╣ рдореБрдЦрд░ ( $ рдирд╛рдо , $ re )
- {
- $ рдпрд╣ -> рдЬреЛрд░ рджреЗрддрд╛ рд╣реИ [ $ рдирд╛рдо ] = $ рдлрд┐рд░ рд╕реЗ ;
- // рдХрдХреНрд╖рд╛ рдХрд╛ рд╡рд░реНрддрдорд╛рди рдЙрджрд╛рд╣рд░рдг рд▓реМрдЯрд╛рдПрдВ
- // рдпрд╣ рд╕рдорд╛рди рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ: $ reg-> рдореБрдЦрд░ ('рдЖрдИрдбреА', '| ^ \ d + $ |') -> рд░рди ();
- рдпрд╣ $ рд╡рд╛рдкрд╕ рдХрд░реЛ ;
- }
- // рдЕрдиреБрд░реЛрдз рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рдорд╛рд░реЛрд╣
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдорд╛рд░реЛрд╣ рдЪрд▓рд╛рдирд╛ ()
- {
- <...>
- }
- }
рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рд╕рдм рдХреБрдЫ рд╕реБрдВрджрд░ рд▓рдЧрддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдмрд┐рдВрджреБ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд╕реМрдВрджрд░реНрдпрд╡рд╛рджреА рд╣реИ - рдЕрдм рдПрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреЛрдб рдХреА рджреЛ рд▓рд╛рдЗрдиреЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
Copy Source | Copy HTML
- $ req = рдирдпрд╛ рдЕрдиреБрд░реЛрдз ( '/ user / {id}' , UserProfile);
- $ req -> assert ( '| ^ \ d + $ |' ) -> run ();
рд▓реЗрдХрд┐рди рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, PHP рд╣рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рдЖрд╡рд░рдг рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреЛ рдХрдХреНрд╖рд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдЧрд╛ рдФрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрд╛рдПрдЧрд╛:
Copy Source | Copy HTML
- рдлрд╝рдВрдХреНрд╢рди рдЕрдиреБрд░реЛрдз ( $ рдкрджреНрдзрддрд┐ , $ рдкрде , $ рдХреЙрд▓рдмреИрдХ )
- {
- рдирдпрд╛ рдЕрдиреБрд░реЛрдз рд╡рд╛рдкрд╕ рдХрд░реЗрдВ ( $ рдкрджреНрдзрддрд┐ , $ рдкрде , $ рдХреЙрд▓рдмреИрдХ );
- }
рдЕрдм рдЖрдк рд╕рдм рдХреБрдЫ рдХреЙрдореНрдкреИрдХреНрдЯ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
Copy Source | Copy HTML
- рдирд┐рд╡реЗрджрди ( '/ user / {id}' , UserProfile) -> рдЕрднрд┐рдХрдерди ( '| ^ \ d + $ |' ) -> run ();
рджреВрд╕рд░рд╛ рдЕрдкреНрд░рд┐рдп рдХреНрд╖рдг рдХрд┐рд╕реА рдПрдХ рдХреЗрдВрджреНрд░ рдХреА рдХрдореА рд╣реИ рдЬрд╣рд╛рдВ рдЕрдиреБрд░реЛрдз рд╕рдВрдЧреНрд░рд╣реАрдд рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рд╣рдореЗрдВ рд╣рд░ рд╕рдордп рд░рди () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рдХреЗрдВрджреНрд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рднреА рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдирдП рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ рдЙрд╕рдХреА рдХрддрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПред рд╕рд╛рде рд╣реА, рджреЛ рдХреЗрдВрджреНрд░ рдирд╣реАрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╣реА рд▓рд┐рдЦ рджреЗрдВрдЧреЗ!
Copy Source | Copy HTML
- рдХрдХреНрд╖рд╛ рдЖрд╡реЗрджрди
- {
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ $ рдЕрдиреБрд░реЛрдз = рд╕рд░рдгреА ();
- /// ---
- // рд╕рд┐рдВрдЧреНрд▓рдЯрди рд▓рд╛рдЧреВ рдХрд░реЗрдВ
- рд╕рдВрд░рдХреНрд╖рд┐рдд рд╕реНрдерд┐рд░ $ рдЙрджрд╛рд╣рд░рдг ;
- рдирд┐рдЬреА рд╕рдорд╛рд░реЛрд╣ __construct ()
- {
- }
- рдирд┐рдЬреА рд╕рдорд╛рд░реЛрд╣ __clone ()
- {
- }
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдерд┐рд░ рдлрд╝рдВрдХреНрд╢рди getInstance ()
- {
- рдЕрдЧрд░ (is_object (рд╕реНрд╡рдпрдВ :: $ рдЙрджрд╛рд╣рд░рдг ))
- {
- рдЖрддреНрдо :: $ рдЙрджрд╛рд╣рд░рдг = рдирдпрд╛ рдЖрддреНрдо;
- }
- рд╡рд╛рдкрд╕реА рд╕реНрд╡ :: $ рдЙрджрд╛рд╣рд░рдг ;
- }
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдерд┐рд░ рдлрд╝рдВрдХреНрд╢рди init ()
- {
- рдЖрддреНрдо :: getInstance ();
- }
- /// ---
- // рдЖрдВрддрд░рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП
- рдирд┐рдЬреА рд╕рдорд╛рд░реЛрд╣ i_run ()
- {
- foreach ( рдпрд╣ $ -> рдЕрдиреБрд░реЛрдз рдФрд░ $ рдЕрдиреБрд░реЛрдз рдХреЗ рд░реВрдк рдореЗрдВ )
- {
- $ рдХрд┐рдпрд╛ = $ рдЕрдиреБрд░реЛрдз -> рдЪрд▓рд╛рдиреЗ ( $ params );
- рдЕрдЧрд░ ( $ рдХрд┐рдпрд╛ рдЧрдпрд╛ ) рд╕рд╣реА рд▓реМрдЯрд╛ ;
- }
- рдЭреВрдареЗ рд▓реМрдЯрдирд╛ ;
- }
- // рдмрд╛рд╣рд░реА рд╕реНрдерд┐рд░ рдЖрд╡рд░рдг рдХрд╛рд░реНрдп i_run рдкрд░
- // рд╕реМрдВрджрд░реНрдпрд╢рд╛рд╕реНрддреНрд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ: рдПрдкреНрд▓рд┐рдХреЗрд╢рди :: рд░рди () рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕реБрдВрджрд░ рджрд┐рдЦрддрд╛ рд╣реИ :: getInstance () -> рд░рди ()
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдереИрддрд┐рдХ рд╕рдорд╛рд░реЛрд╣ рд░рди ()
- {
- рд╡рд╛рдкрд╕реА рдЖрд╡реЗрджрди :: getInstance () -> i_run ();
- }
- }
рдЕрдиреБрд░реЛрдз рд╡рд░реНрдЧ рдХреЛ рднреА рдереЛрдбрд╝рд╛ рдмрджрд▓реЗрдВ:
Copy Source | Copy HTML
- рдХрдХреНрд╖рд╛ рдЕрдиреБрд░реЛрдз
- {
- <...>
- // рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд╛рд░реНрдп __construct ( $ рдкрджреНрдзрддрд┐ , $ рдкрде , $ рдХреЙрд▓рдмреИрдХ )
- {
- $ рдпрд╣ -> рд╡рд┐рдзрд┐ = рд╕реНрдЯреНрд░реЗрдЯреЛрд▓реЙрд╡рд░ ( $ рд╡рд┐рдзрд┐ );
- $ рдпрд╣ -> рдкрде = $ рдкрде ;
- $ рдпрд╣ -> рдХреЙрд▓рдмреИрдХ = $ рдХреЙрд▓рдмреИрдХ ;
- // рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдХрддрд╛рд░ рдореЗрдВ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ рдЬреЛрдбрд╝реЗрдВ
- рдЖрд╡реЗрджрди :: getInstance () -> рдЕрдиреБрд░реЛрдз [] = $ рдпрд╣ ;
- }
- <...>
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдорд╛рд░реЛрд╣ рдЪрд▓рд╛рдирд╛ ()
- {
- <...>
- // рд╕рднреА рдЬрд╛рдВрдЪреЛрдВ рдХреЗ рдмрд╛рдж, рд╣рдо рдХреЙрд▓рдмреИрдХ рдХрд╣рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдЕрдиреБрд░реЛрдз рдЪрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рджреЗ рд░рд╣реЗ рд╣реИрдВ
- $ рдкрд░рд┐рдгрд╛рдо = call_user_func_array ( $ рдпрд╣ -> рдХреЙрд▓рдмреИрдХ, $ рдпрд╣ -> рдЖрд░реНрдЧреНрд╕);
- // рдпрджрд┐ рдХреЙрд▓рдмреИрдХ рдиреЗ рдмреВрд▓рд┐рдпрди рдорд╛рди рд▓реМрдЯрд╛рдпрд╛, рддреЛ рдЙрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдВ
- рдЕрдЧрд░ (is_bool ( $ рдкрд░рд┐рдгрд╛рдо ))
- $ рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рдУ ;
- // рдЕрдиреНрдпрдерд╛, рд╕рд╣реА рд▓реМрдЯреЗрдВ
- рдЕрдиреНрдпрдерд╛
- рд╕рдЪ рд▓реМрдЯрдирд╛ ;
- }
- }
рдПрдХ рдкрде рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрджрд┐ рдХреЙрд▓рдмреИрдХ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрд░реЛрдз рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рдЕрдиреНрдпрдерд╛ рд╕рдм рдХреБрдЫ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдорд╛рд░реЗ рдорд┐рдиреА-рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╣реБрдд рд╕реБрдВрджрд░ рдФрд░ рд╕рд░рд▓ рд▓рдЧрддрд╛ рд╣реИ:
Copy Source | Copy HTML
- рдирдпрд╛ рдЖрд╡реЗрджрди ();
- рдирд┐рд╡реЗрджрди ( '/ user / {id}' , UserProfile) -> рдЕрднрд┐рдХрдерди ( '| ^ \ d + $ |' ) -> run ();
- рдЖрд╡реЗрджрди :: рд░рди ();
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдк рдЖрдЧреЗ рднреА рдЪреАрдЬреЛрдВ рдХреЛ рд╕рд░рд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред PHP рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ, рджреЛ рдмреЗрд╣рддрд░реАрди рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ: auto_prepend_file рдФрд░ auto_append_file, рдЬреЛ рдЖрдкрдХреЛ рдореБрдЦреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ PHP рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХреЛ рдкреНрд░реА-рд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рд╣рдо рд░реВрдкрд░реЗрдЦрд╛ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╕рдВрд▓рдЧреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкрд╣рд▓реЗ рдХрдиреЗрдХреНрд╢рди рдкрд░, рд╣рдо рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рджреВрд╕рд░реЗ рдкрд░, рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди :: рд░рди () рдХрд╣рддреЗ рд╣реИрдВред рдЖрдк рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╣рд▓реА рдмрд╛рд░ рдЪрд▓ рд░рд╣реА рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдпрд╣ рдЬрд╛рдБрдЪ рдХрд░ рдХрд┐ рдХреНрдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд▓рд╛рд╕ рдпрд╛ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдХреНрд▓рд╛рд╕ рдореМрдЬреВрдж рд╣реИ:
Copy Source | Copy HTML
- рдпрджрд┐ (class_exists ( 'Application' ))
- {
- // рдпрджрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд░реНрдЧ рдЕрднреА рддрдХ рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╣рд▓реА рдмрд╛рд░ рдЪрд▓рддреА рд╣реИ
- рдХрдХреНрд╖рд╛ рдЕрдиреБрд░реЛрдз
- {
- <...>
- }
- рдлрд╝рдВрдХреНрд╢рди рдЕрдиреБрд░реЛрдз ( $ рдкрджреНрдзрддрд┐ , $ рдкрде , $ рдХреЙрд▓рдмреИрдХ )
- {
- <...>
- }
- рдХрдХреНрд╖рд╛ рдЖрд╡реЗрджрди
- {
- <...>
- }
- // рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЖрд╡реЗрджрди,
- рдЖрд╡реЗрджрди :: init ();
- }
- рдЕрдиреНрдпрдерд╛
- {
- // рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╣рд▓реА рдмрд╛рд░ рдирд╣реАрдВ рдЪрд▓ рд░рд╣реА рд╣реИ
- рдЖрд╡реЗрджрди :: рд░рди ();
- }
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдореЗрдВ рджреЛ "рдЕрддрд┐рд░рд┐рдХреНрдд" рд▓рд╛рдЗрдиреЛрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдорд┐рд▓рд╛ред
рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдк рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдорд┐рдиреА-рдлреНрд░реЗрдорд╡рд░реНрдХ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ Silex рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реИред рдкреВрд░реНрдг рд╕реНрд░реЛрдд рдХреЛрдб (рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд) рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг
http://fw.nizarium.com/ рдкрд░ рд╣реИ , рдЬреЛ рдПрдХ рд╣реА рдорд┐рдиреА-рдлреНрд░реЗрдорд╡рд░реНрдХ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдХреБрдЫ рдЧрдВрднреАрд░ рди рд╕рдордЭреЗрдВред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдореВрд▓ рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рд▓рд┐рдП рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдЧрд░ рдЗрд╕рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реИ, рддреЛ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВред