Zend рдлреНрд░реЗрдорд╡рд░реНрдХ 2 рдХреЗ рд▓рд┐рдП рдПрдХ CLI рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦрдирд╛

рдЫрд╡рд┐
рдирдорд╕реНрддреЗ!

рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдореИрдВрдиреЗ Zend рдлреНрд░реЗрдорд╡рд░реНрдХ 2 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рдФрд░ рдПрдХ cli рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Zend 2 рдХреЗ рд▓рд┐рдП рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП, рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВ, packagist.org рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреИрд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВ

рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреНрдпрд╛ рд╣реИрдВ: рдбреЗрдЯрд╛рдмреЗрд╕ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдПрдХ рдХреНрд▓рд╛рд╕ рд╕рд┐рд╕реНрдЯрдо рд╣реИ рдЬреЛ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реНрдерд╛рдкрдирд╛


рдЖрдЗрдП рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░реЗрдВ, ZendSkeletonApplication рдХреЛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдВ

рдХреНрд▓реЛрди ZendSkeletonApplication, рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдХрдВрдХрд╛рд▓ рд╣реИред
рд╕реАрдбреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ_рдбрд┐рд░ /
git рдХреНрд▓реЛрди рдХреНрд▓реЛрди git: //github.com/zendframework/ZendSkeletonApplication.git
/ / рдирдореВрдирд╛ рдирд╛рдордЬрдк рдХреЗ рд▓рд┐рдП рдирд╛рдо рдмрджрд▓реЗрдВ
mv ZendSkeletonApplication SampleZendModule
// рдХрдВрдкреЛрдЬрд╝рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реА zendframework рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
php рдХрдВрдкреЛрдЬрд░ред рд╕реНрд╡-рдЕрджреНрдпрддрди
php рдХрдВрдкреЛрдЬрд░

рдмреБрдирд┐рдпрд╛рджреА рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рддреНрд╡рд░рд┐рдд рд╢реБрд░реБрдЖрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ Framework.zend.com/manual/2.0/en/index.html

рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╡рд░рдг


Zend 2 рдХреЗ рд╕рд╛рде рдХрдВрд╕реЛрд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ MVC рддрдХрдиреАрдХ рдХреЗ рд╕рд╛рде рд╡реЗрдм MVC рдХреЗ рд╕рдорд╛рди, рдПрдХ рд╕рдорд╛рди рдорд╛рд░реНрдЧ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓ рдХрдВрд╕реЛрд▓ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рдереЛрдбрд╝рд╛ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред

рд░рд╛рдЙрдЯрд░ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рдВрдЫрд┐рдд рдбреЗрдЯрд╛ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдФрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реА рдХрдорд╛рдВрдб рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рднреА рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдЖрдорддреМрд░ рдкрд░, рд╡реЗрдм рдФрд░ рдХрдВрд╕реЛрд▓ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдВрддрд░ рд╢рд╛рдпрдж Zend \ Http \ Request рдФрд░ Zend \ Console \ Response рдХреЗ рдмрдЬрд╛рдп Zend \ Http \ Response, рдЕрдиреБрд░реЛрдз рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдмрдЬрд╛рдп рдХреНрд░рдорд╢рдГ Zend \ Console \ Request рдХреЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╣реИрдВред

рдХрдВрд╕реЛрд▓ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд╛ рдмрд┐рдВрджреБ рдПрдХ рдПрдХрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ рд╣реИ, рдЬреЛ рд╡реЗрдм рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЕрд░реНрдерд╛рддред рдпрд╣ рдЖрдорддреМрд░ рдкрд░ /project/public/index.php рд╣реИ

рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╡рд╛рдпрд░рдлреНрд░реЗрдо рдмрдирд╛рдирд╛


рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдЬрд╝реЗрдВрдб 2 рдореЗрдВ рдЕрднреА рднреА рдХреЛрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХрдВрд╕реЛрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдирд╣реАрдВ рд╣реИрдВ, рдЖрдкрдХреЛ рд╣рд╛рде рд╕реЗ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЬрдбрд╝ рд╕реЗ рдирд┐рдореНрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдПрдБ
/ рдкрд░рд┐рдпреЛрдЬрдирд╛ /
- / рдореЙрдбреНрдпреВрд▓ / - рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдЭрд╛ рдлрд╝реЛрд▓реНрдбрд░, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдЖрд╡реЗрджрди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
---- / knyzev / - рдореЙрдбреНрдпреВрд▓ рдпрд╛ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд╕рдореВрд╣ рдХрд╛ рдирд╛рдо, рдЖрдкрдХреЛ рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк packagist.org рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡рд╣ рдкреНрд░рдкрддреНрд░ рд╕рдореВрд╣ / рдкреИрдХреЗрдЬ рдХрд╛ рдПрдХ рд╕рдордЧреНрд░ рдирд╛рдо рдЪрд╛рд╣рддрд╛ рд╣реИ
------ / zend-db-migrations / - рдпрд╣ рд╕реНрд╡рдпрдВ рдореЙрдбреНрдпреВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИ
-------- / config / - configs рдХреЗ рд▓рд┐рдП рдлрд╝реЛрд▓реНрдбрд░
-------- / src / - рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рдлрд╝реЛрд▓реНрдбрд░
---------- / ZendDbMigrations / - рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛
------------ / рдирд┐рдпрдВрддреНрд░рдХ / - рдирд┐рдпрдВрддреНрд░рдХ
------------ / рдкреБрд╕реНрддрдХрд╛рд▓рдп / - рдкреНрд░рд╡рд╛рд╕ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп
------------ Module.php - рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╡рд░реНрдЧ
------------README.md - рдореЙрдбреНрдпреВрд▓ рд╡рд┐рд╡рд░рдг
------------ рдХрдВрдкреЛрдЬрд░.рдЬрд╕рди - рдореЙрдбреНрдпреВрд▓ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рд╡рд░реНрдгрди рддрд╛рдХрд┐ рдЖрдк рдЗрд╕реЗ packagist.org рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд╕рдХреЗрдВ

Zend 2 рдореЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдВрддреНрд░рдХ, рд╕реЗрд╡рд╛рдУрдВ рдЖрджрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╡рд┐рдиреНрдпрд╛рд╕

рдЪрд▓реЛ рдХреЙрдиреНрдлрд┐рдЧ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣рд╛рдБ рд╣рдореЗрдВ config.config.php рдлрд╛рдЗрд▓ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЙрдиреНрдлрд┐рдЧ рд╣реИ, рдореБрдЭреЗ рдРрд╕реА рдлрд╛рдЗрд▓ рдХрдВрдЯреЗрдВрдЯ рдорд┐рд▓ рдЧрдП рд╣реИрдВред

<?php return array( 'migrations' => array( 'dir' => dirname(__FILE__) . '/../../../../migrations', 'namespace' => 'ZendDbMigrations\Migrations', 'show_log' => true ), 'console' => array( 'router' => array( 'routes' => array( 'db_migrations_version' => array( 'type' => 'simple', 'options' => array( 'route' => 'db_migrations_version [--env=]', 'defaults' => array( 'controller' => 'ZendDbMigrations\Controller\Migrate', 'action' => 'version' ) ) ), 'db_migrations_migrate' => array( 'type' => 'simple', 'options' => array( 'route' => 'db_migrations_migrate [<version>] [--env=]', 'defaults' => array( 'controller' => 'ZendDbMigrations\Controller\Migrate', 'action' => 'migrate' ) ) ), 'db_migrations_generate' => array( 'type' => 'simple', 'options' => array( 'route' => 'db_migrations_generate [--env=]', 'defaults' => array( 'controller' => 'ZendDbMigrations\Controller\Migrate', 'action' => 'generateMigrationClass' ) ) ) ) ) ), 'controllers' => array( 'invokables' => array( 'ZendDbMigrations\Controller\Migrate' => 'ZendDbMigrations\Controller\MigrateController' ), ), 'view_manager' => array( 'template_path_stack' => array( __DIR__ . '/../view', ), ), ); 


рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ, рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ view_manager рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╣рд╛рдБ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдХреМрди рд╕реЗ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕ рд╢реЙрд░реНрдЯрдХрдЯ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдЖрдк рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рд╕реАрдзреЗ рдЖрд╡реЗрджрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпреЗ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рд╣реИрдВред

рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдореЗрд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рд╣реИрдВ рдЬреЛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╕реНрдЯреЛрд░реЗрдЬ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рд╣реИ, рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреНрд▓рд╛рд╕реЗрд╕ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдиреЗрдорд╕реНрдкреЗрд╕, рдФрд░ show_log рдХрдВрд╕реЛрд▓ рдХреЗ рд▓реЙрдЧ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдХрдВрд╕реЛрд▓ - рдпрд╣ рдХрдВрд╕реЛрд▓ рд░реВрдЯрд┐рдВрдЧ рдХрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИ, Zend 2 рдореЗрдВ рдХрдВрд╕реЛрд▓ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдПрдХ рд░реВрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддреА рд╣реИ рдЬреЛ рд╡реЗрдм рднрд╛рдЧ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИ

рдЖрдк рдпрд╣рд╛рдБ рдХрдВрд╕реЛрд▓ рд░реВрдЯрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
framework.zend.com/manual/2.0/en/modules/zend.console.routes.html

рдпрд╣рд╛рдБ рдирд┐рдпрдорд┐рдд http рд░реВрдЯрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
framework.zend.com/manual/2.0/en/modules/zend.mvc.routing.html

рдЗрд╕рд▓рд┐рдП, рд╣рдо рдорд╛рд░реНрдЧ рдмрдирд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рддреАрди рдорд╛рд░реНрдЧреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
1. db_migrations_version - рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ
2. db_migrations_migrate [] [--env =] - рдбреЗрдЯрд╛рдмреЗрд╕ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рдпрд╛ рд░реЛрд▓ рдХрд░рддрд╛ рд╣реИ
3. db_migrations_generate - рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯрдм рдмрдирд╛рддрд╛ рд╣реИ

рдорд╛рд░реНрдЧ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг:
 'db_migrations_migrate' => array( 'type' => 'simple', 'options' => array( 'route' => 'db_migrations_migrate [<version>] [--env=]', 'defaults' => array( 'controller' => 'ZendDbMigrations\Controller\Migrate', 'action' => 'migrate' ) ) ), 


рдкреНрд░рдХрд╛рд░ - рдорд╛рд░реНрдЧ рдХрд╛ рдкреНрд░рдХрд╛рд░
рд╡рд┐рдХрд▓реНрдк / рдорд╛рд░реНрдЧ - рдорд╛рдкрджрдВрдбреЛрдВ рдФрд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдХрдВрд╕реЛрд▓ рдХрдорд╛рдВрдб рдХрд╛ рдирд╛рдо, рдЕрдЧрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдКрдкрд░ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдореЗрдВ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╡рд┐рдХрд▓реНрдк / рдЪреВрдХ / рдирд┐рдпрдВрддреНрд░рдХ - рдирд┐рдпрдВрддреНрд░рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдорд╛рд░реНрдЧ
рд╡рд┐рдХрд▓реНрдк / рдЪреВрдХ / рдХрд╛рд░реНрд░рд╡рд╛рдИ - рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдХрд╛рд░реНрд░рд╡рд╛рдИ

рдирд┐рдпрдВрддреНрд░рдХ

 <?php /** * Zend Framework (http://framework.zend.com/) * * @link http://github.com/zendframework/ZendSkeletonApplication for the canonical source repository * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ namespace ZendDbMigrations\Controller; use Zend\Mvc\Controller\AbstractActionController; use Zend\View\Model\ViewModel; use Zend\Console\Request as ConsoleRequest; use ZendDbMigrations\Library\Migration; use ZendDbMigrations\Library\MigrationException; use ZendDbMigrations\Library\GeneratorMigrationClass; use ZendDbMigrations\Library\OutputWriter; /** *      */ class MigrateController extends AbstractActionController { /** *     * @return \Migrations\Library\Migration */ protected function getMigration(){ $adapter = $this->getServiceLocator()->get('Zend\Db\Adapter\Adapter'); $config = $this->getServiceLocator()->get('Configuration'); $console = $this->getServiceLocator()->get('console'); $output = null; if($config['migrations']['show_log']) { $output = new OutputWriter(function($message) use($console) { $console->write($message . "\n"); }); } return new Migration($adapter, $config['migrations']['dir'], $config['migrations']['namespace'], $output); } /** *     * @return integer */ public function versionAction(){ $migration = $this->getMigration(); return sprintf("Current version %s\n", $migration->getCurrentVersion()); } /** *  */ public function migrateAction(){ $migration = $this->getMigration(); $version = $this->getRequest()->getParam('version'); if(is_null($version) && $migration->getCurrentVersion() >= $migration->getMaxMigrationNumber($migration->getMigrationClasses())) return "No migrations to execute.\n"; try{ $migration->migrate($version); return "Migrations executed!\n"; } catch (MigrationException $e) { return "ZendDbMigrations\Library\MigrationException\n" . $e->getMessage() . "\n"; } } /** *       */ public function generateMigrationClassAction(){ $adapter = $this->getServiceLocator()->get('Zend\Db\Adapter\Adapter'); $config = $this->getServiceLocator()->get('Configuration'); $generator = new GeneratorMigrationClass($config['migrations']['dir'], $config['migrations']['namespace']); $className = $generator->generate(); return sprintf("Generated class %s\n", $className); } } 


рдпрд╣рд╛рдБ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдПрдХ рдХреНрд░рд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рд░реНрдЧ рдорд╛рд░реНрдЧ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рд░реВрдк рд╣реИ [рдХреНрд░рд┐рдпрд╛] рдХреНрд░рд┐рдпрд╛, рдХреНрд░рд┐рдпрд╛ рдПрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдФрд░ рдирд╛рдо рдХрдорд╛рдВрдб рдХрд╛ рдирд╛рдо рд╣реИред

рд╡рд┐рдирд┐рдпрд╛рдордХ рдХреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреБрд░реЛрдз рдкреИрд░рд╛рдореАрдЯрд░ Zend / рдХрдВрд╕реЛрд▓ / рдЕрдиреБрд░реЛрдз рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ
$ рдпрд╣-> getRequest () -> getParam ('рд╕рдВрд╕реНрдХрд░рдг') - рдпрд╣ рд╣реИ рдХрд┐ рд╣рдореЗрдВ db_migrations_migrate [] рдорд╛рд░реНрдЧ рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдкреИрд░рд╛рдореАрдЯрд░ рдХреИрд╕реЗ рдорд┐рд▓рд╛

рд╕рд╛рджреЗ рдкрд╛рда рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рд╕реЗ рд▓реМрдЯреА рд╣реБрдИ рд╕рдм рдХреБрдЫ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ ViewModel рдореЗрдВ рд▓рдкреЗрдЯреА рдЬрд╛рдПрдЧреА рдФрд░ рд╕реАрдзреЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдЧреАред

рдХрдВрд╕реЛрд▓ рдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдЬреИрд╕реЗ рд╣реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рддрд╛ рд╣реИ, рдЖрдкрдХреЛ Zend / Console / Response рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рд╕реЗрд╡рд╛ рд▓реЛрдХреЗрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ $ $ рдпрд╣ рдорд┐рд▓рддрд╛ рд╣реИ-> getServiceLocator () -> get ('рдХрдВрд╕реЛрд▓')ред Supp рд░рд╛рдЗрдЯ рд▓рд┐рдЦрдиреЗ, рд▓рд┐рдЦрдиреЗ, рд▓рд┐рдЦрдиреЗ рдХреЗ рддрд░реАрдХреЗред рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Module.php

 <?php namespace ZendDbMigrations; use Zend\Mvc\ModuleRouteListener; use Zend\ModuleManager\Feature\AutoloaderProviderInterface; use Zend\ModuleManager\Feature\ConfigProviderInterface; use Zend\ModuleManager\Feature\ConsoleUsageProviderInterface; use Zend\Console\Adapter\AdapterInterface as Console; use Zend\ModuleManager\Feature\ConsoleBannerProviderInterface; class Module implements AutoloaderProviderInterface, ConfigProviderInterface, ConsoleUsageProviderInterface, ConsoleBannerProviderInterface { public function onBootstrap($e) { $e->getApplication()->getServiceManager()->get('translator'); $eventManager = $e->getApplication()->getEventManager(); $moduleRouteListener = new ModuleRouteListener(); $moduleRouteListener->attach($eventManager); } public function getConfig() { return include __DIR__ . '/config/module.config.php'; } public function getAutoloaderConfig() { return array( 'Zend\Loader\StandardAutoloader' => array( 'namespaces' => array( __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__, ), ), ); } public function getConsoleBanner(Console $console){ return 'DB Migrations Module'; } public function getConsoleUsage(Console $console){ //description command return array( 'db_migrations_version' => 'Get current migration version', 'db_migrations_migrate [<version>]' => 'Execute migrate', 'db_migrations_generate' => 'Generate new migration class' ); } } 


Module.php рдлрд╝рд╛рдЗрд▓ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ, рд╕рднреА Module.php рдлрд╛рдЗрд▓реЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдЕрдиреНрдп рдбреЗрдЯрд╛ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЛрдб рдХреА рдЬрд╛рддреА рд╣реИрдВред

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореЙрдбреНрдпреВрд▓ рд╡рд░реНрдЧ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛ред

рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрдВрд╕реЛрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рд╕рднреА рдореМрдЬреВрджрд╛ рдЖрджреЗрд╢реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдВрд╕реЛрд▓ рдХрдВрд╕реЛрд▓ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдкрд░ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдЖрджреЗрд╢реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдЧрд╛ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЖрдк рдХрдорд╛рдВрдб рдЪрд▓рд╛рддреЗ рд╣реИрдВ
php рдЬрдирддрд╛ / index.php
рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЯрд░реНрди рдХреА getConsoleUsage рдкрджреНрдзрддрд┐ рд╕рднреА рдХрдорд╛рдВрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдПрдЧреА

PHPUnit рдЯреЗрд╕реНрдЯ рдмрдирд╛рдирд╛

рдПрдорд╡реАрд╕реА рдЬрд╝реЗрдВрдб 2 рдореЗрдВ рдЯреЗрд╕реНрдЯ рдЖрдорддреМрд░ рдкрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЬрдбрд╝ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореЙрдбреНрдпреВрд▓ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
/ рдкрд░рд┐рдпреЛрдЬрдирд╛ /
- / рдореЙрдбреНрдпреВрд▓ /
- / knyzev /
--- / zend-db-migrations /
---- / src /
----- / ZendDbMigrations /
------ / рдирд┐рдпрдВрддреНрд░рдХ /
------- / MigrateController.php
- / рдкрд░реАрдХреНрд╖рдг /
- / knyzev /
--- / zend-db-migrations /
---- / src /
----- / ZendDbMigrations /
------ / рдирд┐рдпрдВрддреНрд░рдХ /
------- / MigrateControllerTest.php

рдФрд░ рдореИрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯрдХрдВрдЯреНрд░реЛрд▓рд░ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛

 <?php namespace Tests\ZendDbMigrations\Controller; use ZendDbMigrations\Controller\MigrateController; use Zend\Console\Request as ConsoleRequest; use Zend\Console\Response; use Zend\Mvc\MvcEvent; use Zend\Mvc\Router\RouteMatch; use PHPUnit_Framework_TestCase; use \Bootstrap; use Zend\Db\Adapter\Adapter; use Zend\Db\Metadata\Metadata; /** *   MigrateController */ class MigrateControllerTest extends PHPUnit_Framework_TestCase { protected $controller; protected $request; protected $response; protected $routeMatch; protected $event; protected $eventManager; protected $serviceManager; protected $dbAdapter; protected $connection; protected $metadata; protected $folderMigrationFixtures; /** *  */ protected function setUp() { $bootstrap = \Zend\Mvc\Application::init(Bootstrap::getAplicationConfiguration()); $this->request = new ConsoleRequest(); $this->routeMatch = new RouteMatch(array('controller' => 'migrate')); $this->event = $bootstrap->getMvcEvent(); $this->event->setRouteMatch($this->routeMatch); $this->eventManager = $bootstrap->getEventManager(); $this->serviceManager = $bootstrap->getServiceManager(); $this->dbAdapter = $bootstrap->getServiceManager()->get('Zend\Db\Adapter\Adapter'); $this->connection = $this->dbAdapter->getDriver()->getConnection(); $this->metadata = new Metadata($this->dbAdapter); $this->folderMigrationFixtures = dirname(__FILE__) . '/../MigrationsFixtures'; $this->initController(); $this->tearDown(); } protected function tearDown(){ $this->dbAdapter->query('DROP TABLE IF EXISTS migration_version CASCADE;', Adapter::QUERY_MODE_EXECUTE); $this->dbAdapter->query('DROP TABLE IF EXISTS test_migrations CASCADE;', Adapter::QUERY_MODE_EXECUTE); $this->dbAdapter->query('DROP TABLE IF EXISTS test_migrations2 CASCADE;', Adapter::QUERY_MODE_EXECUTE); $iterator = new \GlobIterator($this->folderMigrationFixtures . '/tmp/*', \FilesystemIterator::KEY_AS_FILENAME); foreach ($iterator as $item) { if($item->isFile()) { unlink($item->getPath() . '/' . $item->getFilename()); } } chmod($this->folderMigrationFixtures . '/tmp', 0775); } protected function initController(){ $this->controller = new MigrateController(); $this->controller->setEvent($this->event); $this->controller->setEventManager($this->eventManager); $this->controller->setServiceLocator($this->serviceManager); } /** *      */ public function testVersion() { $this->routeMatch->setParam('action', 'version'); $result = $this->controller->dispatch($this->request); $response = $this->controller->getResponse(); $this->assertEquals(200, $response->getStatusCode(), 'Status code is 200 OK!'); $this->assertInstanceOf('Zend\View\Model\ViewModel', $result, 'Method return object Zend\View\Model\ViewModel!'); $this->assertEquals("Current version 0\n", $result->getVariable('result'), 'Returt value is correctly!'); //    $this->connection->execute('INSERT INTO migration_version (version) VALUES (12345678910)'); // $result = $this->controller->dispatch($this->request); $response = $this->controller->getResponse(); $this->assertEquals("Current version 12345678910\n", $result->getVariable('result'), 'Returt value is correctly!'); } /** *        */ public function testMigrateIfNotMigrations() { $this->routeMatch->setParam('action', 'migrate'); $result = $this->controller->dispatch($this->request); $response = $this->controller->getResponse(); $this->assertEquals(200, $response->getStatusCode(), 'Status code is 200 OK!'); $this->assertInstanceOf('Zend\View\Model\ViewModel', $result, 'Method return object Zend\View\Model\ViewModel!'); $this->assertEquals("No migrations to execute.\n", $result->getVariable('result'), 'Return correct info if no exists not executable migations!'); } /** *       */ public function testMigrationIfExistsMigrations(){ //       copy($this->folderMigrationFixtures . '/MigrationsGroup1/Version20121110210200.php', $this->folderMigrationFixtures . '/tmp/Version20121110210200.php'); $this->routeMatch->setParam('action', 'migrate'); $result = $this->controller->dispatch($this->request); $response = $this->controller->getResponse(); $this->assertEquals(200, $response->getStatusCode(), 'Status code is 200 OK!'); $this->assertEquals("Migrations executed!\n", $result->getVariable('result'), 'Return correct info if executed migrations!'); //     $this->assertTrue(in_array('test_migrations', $this->metadata->getTableNames()), 'Migration real executed!'); //         $this->initController(); $this->routeMatch->setParam('action', 'migrate'); $this->routeMatch->setParam('version', 20121110210200); $result = $this->controller->dispatch($this->request); $response = $this->controller->getResponse(); $this->assertEquals(200, $response->getStatusCode(), 'Status code is 200 OK!'); $this->assertContains("Migration version 20121110210200 is current version!\n", $result->getVariable('result'), 'Starting the migration with a current version works correctly!'); } /** *       */ public function testMigrateWithVersion() { copy($this->folderMigrationFixtures . '/MigrationsGroup2/Version20121111150900.php', $this->folderMigrationFixtures . '/tmp/Version20121111150900.php'); copy($this->folderMigrationFixtures . '/MigrationsGroup2/Version20121111153700.php', $this->folderMigrationFixtures . '/tmp/Version20121111153700.php'); $this->routeMatch->setParam('action', 'migrate'); $this->routeMatch->setParam('version', 20121111150900); $result = $this->controller->dispatch($this->request); $response = $this->controller->getResponse(); $this->assertEquals(200, $response->getStatusCode(), 'Status code is 200 OK!'); $this->assertTrue(in_array('test_migrations', $this->metadata->getTableNames()), 'Migration 20121111150900 execucte ok!'); $this->assertFalse(in_array('test_migrations2', $this->metadata->getTableNames()), 'Migration 20121111153700 not execucte ok!'); } /** *      */ public function testGenerateMigrationClass() { $this->routeMatch->setParam('action', 'generateMigrationClass'); $result = $this->controller->dispatch($this->request); $response = $this->controller->getResponse(); $this->assertEquals(200, $response->getStatusCode(), 'Status code is 200 OK!'); $this->assertInstanceOf('Zend\View\Model\ViewModel', $result, 'Method return object Zend\View\Model\ViewModel!'); $this->assertContains("Generated class ", $result->getVariable('result'), 'Return result info ok!'); $fileName = sprintf('Version%s.php', date('YmdHis', time())); $this->assertFileExists($this->folderMigrationFixtures . '/tmp/' . $fileName, 'Generate command real generated class!'); } } 


рдпрд╣рд╛рдБ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВред
framework.zend.com/manual/2.0/en/user-guide/unit-testing.html

рдпрд╣рд╛рдВ рдПрдХ рдЕрддрд┐ рд╕реВрдХреНрд╖реНрдо рдЕрдВрддрд░ рд╣реИ, Zend 2 рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЯреЗрд╕реНрдЯ рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдмрд╛рдЗрдХ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

Composer.json рдФрд░ packagist.org рдкрд░ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдЬреЛрдбрд╝рдирд╛


рдЕрдм рд╣рдореЗрдВ json рд╕рдВрдЧреАрддрдХрд╛рд░ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдореЙрдбреНрдпреВрд▓ рд░реВрдЯ рдореЗрдВ рдХрдВрдкреЛрдЬрд╝рд░.рдЬреЙрди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ
 { "name": "knyzev/zend-db-migrations", "description": "Module for managment database migrations.", "type": "library", "license": "BSD-3-Clause", "keywords": [ "database", "db", "migrations", "zf2" ], "homepage": "https://github.com/vadim-knyzev/ZendDbMigrations", "authors": [ { "name": "Vadim Knyzev", "email": "vadim.knyzev@gmail.com", "homepage": "http://vadim-knyzev.blogspot.com/" } ], "require": { "php": ">=5.3.3", "zendframework/zendframework": "2.*" }, "autoload": { "psr-0": { "ZendDbMigrations": "src/" }, "classmap": [ "./Module.php" ] } } 


рдирд╛рдо - рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд╛рдо, рдпрд╣ рдореЙрдбреНрдпреВрд▓ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдирд╛рдо рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдЧрд╛ред
рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдирд┐рд░реНрднрд░рддрд╛
рдмрд╛рдХреА рдХреА рдирдХрд▓ рдФрд░ рд╕рдорд╛рдирддрд╛ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЕрдЧрд▓рд╛, github.com рдкрд░ рдПрдХ рдЦрд╛рддрд╛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ, рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рднрдВрдбрд╛рд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдлреЙрд░реНрдо MyZendModule рдХрд╛ рдирд╛рдо рджрд░реНрдЬ рдХрд░реЗрдВ
рд╕реНрдерд╛рдиреАрдп рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░, рд╣рдо рдЧрд┐рдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдЖрд░рдВрдн рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕рдм рдХреБрдЫ рдЧрд┐рдЯрдм рдХреЛ рднреЗрдЬрддреЗ рд╣реИрдВ
init
git рд░рд┐рдореЛрдЯ рдРрдб рдореВрд▓ github.com/knyzev/zend-db-migrations
git рдРрдб-рдП
git рдХрдорд┐рдЯ -рдо "Init рдкреНрд░рддрд┐рдмрджреНрдз"
рдЬреЛрд░ рдХрд╛ рдзрдХреНрдХрд╛

рд╣рдо packagist.org рдкрд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВ, рд╕рдмрдорд┐рдЯ рдкреИрдХреЗрдЬ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЬреАрдердм рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣реАрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреАрддрдХрд╛рд░.рдЬреЙрди рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ рдФрд░ рдпрджрд┐ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ рддреЛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдЧрд╛ред

рд╕рдм рдХреБрдЫ, рдЕрдм рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдореЗрдВ рдореБрдЦреНрдп рдлрд╛рдЗрд▓ рдХрдВрдкреЛрдЬрд░.рдЬреЙрди рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдмрд╕ knyzev / zend-db-migrations рдХреА рддрд░рд╣ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝реЗрдВ
рдЖрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ
php рдХрдВрдкреЛрдЬрд░ред рд╕реНрд╡-рдЕрджреНрдпрддрди
php рдХрдВрдкреЛрдЬрд╝рд░ .phar рдЕрдкрдбреЗрдЯ
рдФрд░ рдореЙрдбреНрдпреВрд▓ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ / рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ редconfig.php

рд╕рд┐рдореНрдлрдиреА 2 + рд╕рд┐рджреНрдзрд╛рдВрдд 2 рдФрд░ Zend 2 рдХреА рддреБрд▓рдирд╛


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

рдЗрд╕ рдЖрд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдореЙрдбреНрдпреВрд▓ рдХреЛ рдпрд╣рд╛рдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
github.com/vadim-knyzev/ZendDbMigrations
рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЯреЗрд╕реНрдЯ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ рдЬрд╝реЗрдВрдб 2 рдореЙрдбреНрдпреВрд▓ рдХреА рдорд╛рдирдХ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдорд╛рдирдХреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдкрд░реАрдХреНрд╖рдг рдПрдХ рдЕрд▓рдЧ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВред

рдкреБрдирд╢реНрдЪ: рдХреНрдпрд╛ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ zend рд╡реЗрдмрд╕рд╛рдЗрдЯ рдореЙрдбреНрдпреВрд▓ . zendframework.com рдкрд░ рдореЙрдбреНрдпреВрд▓ рдЬрд╛рдирдХрд╛рд░реА рдкреГрд╖реНрда рдкрд░ рдореЙрдбреНрдпреВрд▓ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП?

framework.zend.com/manual/2.0/en/index.html
github.com/vadim-knyzev/ZendDbMigrations
vadim-knyzev.blogspot.com

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


All Articles