рд╣рдо рд╕рд┐рд▓реЗрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдбреЙрдХреНрдЯреНрд░рд┐рди 2 рдУрдЖрд░рдПрдо рдХреЛ рддреЗрдЬ рдХрд░рддреЗ рд╣реИрдВ

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

рдХрдВрдкреЛрдЬрд░.рдЬреЙрди рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ


 { "minimum-stability": "dev", "require": { "php": ">=5.3.3", "silex/silex": "1.*", "taluu/doctrine-orm-provider": "1.0.*" }, "config": { "bin-dir": "bin" } } 

рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреНрд╖реЗрддреНрд░ рдХреЛ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рдЗрд╕рдореЗрдВ, рд╣рдо рдЙрд╕ рдЬрдЧрд╣ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╕рдВрдЧреАрддрдХрд╛рд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╢реЙрд░реНрдЯрдХрдЯ (рдЙрдкрдирд╛рдо) рдмрдирд╛рдПрдЧрд╛ред
composer install

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ


рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрдбрд╝ рдореЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╝реЛрд▓реНрдбрд░ - app/src , рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдПрдВред рдкреИрдЯрд░реНрди рдХреЗ рдмрд╛рдж (рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЖрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдореИрдВрдиреЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛) рдореИрдВрдиреЗ src рдХрд╣рд╛ред
рдирд┐рдореНрди рдХреЛрдб рдХреЛ index.php рдЬреЛрдбрд╝реЗрдВ:
 // index.php <?php $app = require __DIR__.'/src/app.php'; $app->run(); 

рдпрд╣рд╛рдВ рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ $ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЕрдирд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВред
рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реИ app.php:
 // src/app.php <?php require __DIR__.'/../vendor/autoload.php'; $app = new Silex\Application(); $app['debug'] = true; require __DIR__.'/registers.php'; require __DIR__.'/controllers.php'; return $app; 

рдФрд░ рдпрд╣рд╛рдВ рд╣рдо рдХрдореНрдкреЛрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдХреНрд▓рд╛рд╕ рдСрдЯреЛрд▓реИрдбрд░ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред
рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдореЗрдВ .php, рд╣рдо рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рддрд░реНрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ: $ app-> get (), $ app-> рддреНрд░реБрдЯрд┐ (), рдЖрджрд┐ред
рд╣рдо registers.php рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ:
 // src/registers.php <?php use Doctrine\Common\Cache\ApcCache; use Doctrine\Common\Cache\ArrayCache; $app->register(new Silex\Provider\DoctrineServiceProvider(), array( 'db.options' => array(//   DBAL : http://silex.sensiolabs.org/doc/providers/doctrine.html 'driver' => 'pdo_mysql', 'dbname' => 'silex_test', 'host' => '127.0.0.1', 'user' => 'root', 'password' => 'root', 'charset' => 'utf8' ) )); $app->register(new Nutwerk\Provider\DoctrineORMServiceProvider(), array( 'db.orm.proxies_dir' => __DIR__.'/../cache/doctrine/proxy', 'db.orm.proxies_namespace' => 'DoctrineProxy', 'db.orm.cache' => !$app['debug'] && extension_loaded('apc') ? new ApcCache() : new ArrayCache(), 'db.orm.auto_generate_proxies' => true, 'db.orm.entities' => array(array( 'type' => 'annotation', //     Entity 'path' => __DIR__, // ,    'namespace' => 'TestApp\Entity', //   )), )); 

рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдВ:
src/TestApp рдФрд░ src/TestApp/Entity

Doctrine рдХрдВрд╕реЛрд▓ рдкреНрд░рдмрдВрдзрди рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХрд░реЗрдВ



рдЖрдкрдХреЛ рдбреЙрдХрдЯреНрд░рд┐рди рдХреЗ рдХрдВрд╕реЛрд▓ рдЯреВрд▓реНрд╕ (рдЗрд╕рдХреЗ рдмрд╛рдж рдмрд╕ рдХрдВрд╕реЛрд▓) рдореЗрдВ рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЙрдкрд▓рдмреНрдз рд╣реИ, bin рдореЗрдВ рд╕рдВрдЧреАрддрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдХрдВрд╕реЛрд▓ рдФрд░ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, cli-config.php рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдпрд╣ рдлрд╝рд╛рдЗрд▓ vendor/doctrine/orm/tools/sandbox , рд╡рд╣рд╛рдВ рд╕реЗ bin рдХреЙрдкреА рдХрд░реЗрдВред рдЕрдм, $helpers рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рдм рдХреБрдЫ рд╣рдЯрд╛ рджреЗрдВред
рд╕рднреА рд░рд┐рдореЛрдЯ рдХреЛрдб рдмрдирд╛рдП рдЧрдП рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ рдЬреЛ рд╣рдордиреЗ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдереЗред рддреЛ рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ?
 // bin/cli-config.php <?php $app = require __DIR__.'/../src/app.php'; $em = $app['db.orm.em']; $helpers = new Symfony\Component\Console\Helper\HelperSet(array( 'db' => new \Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper($em->getConnection()), 'em' => new \Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper($em) )); 

рдпрд╣рд╛рдБ рдпрд╣ рдЬреЛрдбрд╝рдирд╛ рдЙрдЪрд┐рдд рд╣реИ рдХрд┐ рдбреЙрдХрдЯрд╛рдЗрди рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ, рд╣рдо $app['db.orm.em'] рд╕реЗ EntityManager рдХреА рдПрдХ рдкреНрд░рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рд╡рд┐рдХрд▓реНрдк:

  1. рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ, рдРрд╕рд╛ рди рдХрд░реЗрдВ:
    рдлрд┐рдХреНрд╕ рдмрд┐рди / doctrine.php:
      $configFile = getcwd() . DIRECTORY_SEPARATOR . 'bin/cli-config.php'; // 21  

    рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдореВрд▓ рдореЗрдВ cli-config.php рд░рдЦрдХрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ред рдПрдХ рддрд░рдл, рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдХреЛрдб рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рджреВрд╕рд░реА рддрд░рдл, рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
  2. рдЖрдк рдПрдХ рдФрд░, рдЕрдзрд┐рдХ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ - рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдХрдВрд╕реЛрд▓ рдмрдирд╛рдПрдВ рдФрд░ рдЕрдкрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЦреБрдж рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ:
     // bin/console #!/usr/bin/env php <?php require 'cli-config.php'; include('doctrine.php'); 

    рдЕрдм рдЖрдкрдХреЛ рдмрд┐рди / рдХрдВрд╕реЛрд▓ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдЙрдкрдпреЛрдЧ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрд╛рд░ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
     ./bin/console [command_name] 

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

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


All Articles