Silex - Symfony2 рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рд╕реЗ рдорд╛рдЗрдХреНрд░реЛрдлреНрд░рд╛рдорд╡рд░реНрдХ

рд▓рдЧрднрдЧ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ PHP рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП 'рд╡рд╕рд╛ рд░рд╣рд┐рдд' рдирд╛рдордХ рдорд╛рдЗрдХреНрд░реЛрдлреНрд░рд╛рдорд╡рд░реНрдХ рдкрд░ рдПрдХ рд▓реЗрдЦ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдерд╛ред рдлрд┐рд░ рдЗрд╕ рд░реВрдкрд░реЗрдЦрд╛ рдФрд░ рд▓реЗрдЦ рдиреЗ рд╕реНрд╡рдпрдВ рдХреБрдЫ рд░реБрдЪрд┐ рдкреИрджрд╛ рдХреА, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рд┐рдирд╛рддреНрд░рд╛ рдХреА рд╢реИрд▓реА рдореЗрдВ рдПрдХ рдФрд░ PHP рдорд╛рдЗрдХреНрд░реЛрдлреНрд░рд╛рдорд╡рд░реНрдХ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ - рд╕рд┐рд▓реЗрдХреНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯред
рдЫрд╡рд┐
PHP рд╕рд░реНрдХрд┐рд▓ рд╕реЗрдВрд╕рд┐рдпреЛ рд▓реИрдмреНрд╕ рдореЗрдВ рдкреНрд░рд╕рд┐рджреНрдз, рдХреЛрдИ рдХрдо рдкреНрд░рд╕рд┐рджреНрдз рдлреЗрдмрд┐рдпрди рдкреЙрдЯреЗрдирд╕реАрдпрд░ - рдЖрдЬ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп PHP рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ - рд╕рд┐рдореНрдлрдиреА, Silex рдкреНрд░рд╢рдВрд╕рдХреЛрдВ рдХреА рд╕реЗрдирд╛ рджреНрд╡рд╛рд░рд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдХрд╛ рдПрдХ рд╣рд▓реНрдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ (рдЬреЛ рдореИрдВ рдЦреБрдж рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рд╣рд┐рдореНрдордд рдХрд░рддрд╛ рд╣реВрдВ) рд╕рд┐рдореНрдлрдиреА 2ред

рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП, Silex рд╕рд┐рдореНрдлрдиреА 2 рдХреЗ рдкреНрд░рдореБрдЦ рдШрдЯрдХреЛрдВ рдХреЛ "рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдЗрдВрдЬреЗрдХреНрд╢рди " рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рдХреЗ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдкрд┐рдВрдкрд▓ рд╕рд░реНрд╡рд┐рд╕ рдХрдВрдЯреЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдХреЛрдб рдХреЗ рддрд╛рд░реНрдХрд┐рдХ рднрд╛рдЧреЛрдВ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ - рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рдмрдирд╛рддрд╛ рд╣реИред

Symfony2 рдХреА рддрд░рд╣, Silex рдореЗрдВ рдПрдХ рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд рдПрдкреАрдЖрдИ рд╣реИ, рдЬреЛ рд╡рд┐рдХрд╛рд╕ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХрд╛рдлреА рд╕реБрдЦрдж рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рд▓рдЧрднрдЧ рдХреБрдЫ рдЪрд░рдгреЛрдВ рдореЗрдВ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдЕрдкрдиреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред


рдЖрд╡реЗрджрди рдЙрджрд╛рд╣рд░рдг


рд╕рдмрд╕реЗ рд╕рд░рд▓ Silex рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

require_once __DIR__.'/silex.phar'; // *.phar -      PHP 5.3. ,    ( *jar  Java?). $app = new Silex\Application(); //       PHP 5.3 тАФ  .       . $app->get('/hello/{name}', function($name) { //       тАФ    . return "Hello $name"; }); $app->run(); //   


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ / рд╣реИрд▓реЛ / {name} рдХреЗ рд▓рд┐рдП GET рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХреЛрдб рдХреЛ рдХреНрд▓реЛрдЬрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╕реНрдерд╛рдкрдирд╛


рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ php.ini рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд PHP рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 5.3 рд╕реЗ рдХрдо рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

phar.readonly = Off
phar.require_hash = Off .

рдлрд╝реЙрд░ рдЖрд░реНрдХрд╛рдЗрд╡ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдлрд╝рд╛рдЗрд▓ (index.php) рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрджрд┐ рдЖрдк рдЕрдкрд╛рдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЗ рдЖрдЧреЗ рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде .htaccess рдмрдирд╛рдПрдВ:

<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /path/to/app
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]


рдорд╛рд░реНрдЧ


Silex рдЖрдкрдХреЛ рдЕрд╕реАрдорд┐рдд рд▓рдВрдмрд╛рдИ рдХреЗ рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

 $app->get('/hello/awesome/pink/ponnies', function(){ ... }); 


рдЖрдк рдорд╛рд░реНрдЧреЛрдВ рдореЗрдВ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 $app->get('/hello/awesome/pink/{animal}', function($animal) { ... }); 


рдЕрд╕реАрдорд┐рдд рдЪрд░:

 $app->get('/hello/{impression}/{color}/{animal}', function($impression, $color, $animal) { ... }); 


рдЕрдиреБрд░реЛрдз, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ POST рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

 $app->post('/ponnies', function() use ($app) { //  ,   $app          $request = $app['request']; echo $request->get('ponny'); } 


рдФрд░ рдкреВрдд:

 $app->put('/blog', function() { ... }); 


рдФрд░ DELETE:

 $app->delete('/blog', function() { ... }); 


рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛рдУрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рд░реНрдЧ рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛ рд╕рдХрддреА рд╣реИ:

 $app->get('/blog/show/{postId}/{commentId}', function($postId, $commentId) { ... }) ->assert('postId', '\d+') //   ->assert('commentId', '\d+'); //   


рдФрд░ рдПрдХ рдирд╛рдо рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ:

 $app->get('/', function() { ... }) ->bind('homepage'); 

рдЬреЛ рдЗрди рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред

рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ, рдЖрдк рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реЗ рдкрд╣рд▓реЗ / рдмрд╛рдж рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдордирдорд╛рдиреЗ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 $app->before(function() { //  }); $app->after(function() { //  }); 


рд╕реЗрд╡рд╛рдПрдВ


рдкрд┐рдВрдкрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдЗрдВрдЬреЗрдХреНрд╢рди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛рдлреА рд╕рд░рд▓ рдФрд░ рд╕реАрдзрд╛ рд╣реИред

рдПрдХ рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдмрдирд╛рдПрдВ:

 use Silex\Application; $app = new Application(); 


рдФрд░ рдЗрд╕реЗ рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦреЗрдВ, рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ:

 $app['some_parameter'] = 'value'; 


рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рдЪрд┐рдд рдмрдВрдж:

 $app['some_service'] = function() { return new Service(); }; 


рдЙрдирдХреЗ рдЖрдЧреЗ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:

 $service = $app['some_service']; 


рдпрджрд┐ рд╕реЗрд╡рд╛ рдХреЛ рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢реЗрдпрд░ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:

 $app['some_service'] = $app->share(function() { return new Service(); }); 


рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, $ app ['some_service'] рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдмрд╛рдж рдХреА рдХреЙрд▓ рдкрд░, рдЗрд╕рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред

рд╡рд┐рд╕реНрддрд╛рд░


рдврд╛рдВрдЪрд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд▓рд┐рдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рдПрдХ рд▓рдЪреАрд▓реА рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреВрд░-рджреВрд░ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:

 use Acme\DatabaseExtension; $app = new Application(); $app->register(new DatabaseExtension(), array( 'database.dsn' => 'mysql:host=localhost;dbname=myapp', 'database.user' => 'root', 'database.password' => 'secret_root_password', )); 


рдЕрдм рдЙрдкрд▓рдмреНрдз рдорд╛рдирдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рд╕реЗ:



рд░рд╛рд╕реНрддреЗ рдореЗрдВ - Doctrine2 рдФрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдЬрдирд░реЗрдЯрд░ред

рдФрд░ рдпрд╣ рд╕рд┐рд░реНрдл рд╢реБрд░реБрдЖрдд рд╣реИред Silex рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдЬреИрд╕реЗ рд╣реА рд╕рдореБрджрд╛рдп рдЗрд╕ рдврд╛рдВрдЪреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдмрдирддрд╛ рд╣реИ, рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рдХреБрдЫ рд╣реЛрдЧрд╛ред

рдкрд░рд┐рдгрд╛рдо


рдорд╛рдЗрдХреНрд░реЛрдлрд╝реНрд░реЗрдо рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рд░рд▓ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдореЗрдВ рдПрдХ рдареЛрд╕ рд╕реНрдерд╛рди рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рдФрд░ рд╕рд┐рдореНрдлрдиреА 2 рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рд╢рд╛рд▓ рдХреЗ рдХрдВрдзреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдорд╛рдЗрдХреНрд░реЛрдлрд╝реНрд░рд╛рдорд╡рд░реНрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ PHP рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдШрдЯрдирд╛ рд╣реИред

рдлреНрд░реЗрдорд╡рд░реНрдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ: http://silex-project.org

рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ:

Symfony2 рд╡реЗрдмрд╕рд╛рдЗрдЯ
рдЪрд░рдг рдкреНрд░рд▓реЗрдЦрди
рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди

Source: https://habr.com/ru/post/In118011/


All Articles