рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░ред
рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореИрдВрдиреЗ Zend Framework 2 рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдЪреВрдВрдХрд┐ рдореБрдЭреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╡реНрдпрд╛рдкрдХ рдЕрдиреБрднрд╡ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЙрд╕реА рд╕рдордп рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ
рдореЙрдбреНрдпреВрд▓ ред Zendframework.com рдХреЛ рджреЗрдЦрд╛ рдФрд░ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ - рдпрд╣ Zf2ActiveRecord рд╣реЛрдЧрд╛ред
рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдХреИрд╕реЗ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ (рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХрдИ рд▓реЗрдЦ рд╣реИрдВ), рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл Zf2ActiveRecord рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджреЗрдВред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЧрд┐рдЯ рдФрд░ рд╕рдВрдЧреАрддрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЖрдк
рдЗрд╕реЗ рдФрд░
рдпрд╣ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдореЗрдВ рдереЛрдбрд╝рд╛ рдкрд╛рда рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рд╣реЛрдВрдЧреЗред рддреЛ рдЪрд▓рд┐рдП рдЪрд▓рддреЗ рд╣реИрдВред
рд╕реНрдерд╛рдкрдирд╛
рд╣рдо рдЕрдкрдиреЗ рдврд╛рдВрдЪреЗ рдХреЛ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП
ZendSkeletonApplication рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдХрдВрдкреЛрдЬрд╝рд░.рдЬреЙрди рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝реЗрдВ
"require": { "alxsad/zf2activerecord": "dev-master" }
рдФрд░ Application.config.php рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ
'modules' => array( 'Application', 'Zf2ActiveRecord', ),
рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛
'service_manager' => array( 'factories' => array( 'books-active-record' => function ($sm) { $adapter = $sm->get('zf2-active-record-adapter'); $factory = new \Zf2ActiveRecord\ActiveRecord($adapter, array( 'primaryKey' => 'id', 'tableName' => 'books', )); return $factory; }, ), )
namespace Application\Controller; use Zend\Mvc\Controller\AbstractActionController; class IndexController extends AbstractActionController { public function indexAction () { $books = $this->getServiceLocator()->get('books-active-record'); $book = $books->create(array( 'title' => 'test title', 'author' => 'test author', )); $saved = $book->save(); } }
рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдЙрджрд╛рд╣рд░рдг
namespace Application\Entity; use Zf2ActiveRecord\AbstractActiveRecord; class Book extends AbstractActiveRecord { protected $id = null; protected $author = null; protected $title = null; public function getId () { return $this->id; } public function setId ($id) { $this->id = (int) $id; return $this; } public function getAuthor () { return $this->author; } public function setAuthor ($author) { $this->author = $author; return $this; } public function getTitle () { return $this->title; } public function setTitle ($title) { $this->title = $title; return $this; } public function exchangeArray (array $array) { foreach ($array as $key => $value) { switch (strtolower($key)) { case 'id': $this->setId($value); continue; case 'author': $this->setAuthor($value); continue; case 'title': $this->setTitle($value); continue; default: break; } } } public function getArrayCopy () { return array( 'id' => $this->getId(), 'author' => $this->getAuthor(), 'title' => $this->getTitle(), ); } }
'service_manager' => array( 'factories' => array( 'books-active-record' => function ($sm) { $adapter = $sm->get('zf2-active-record-adapter'); $factory = new \Application\Entity\Book(); $factory->setAdapter($adapter) ->setPrimaryKey('id') ->setTableName('books'); return $factory; }, ), )
namespace Application\Controller; use Zend\Mvc\Controller\AbstractActionController; class IndexController extends AbstractActionController { public function indexAction () { $books = $this->getServiceLocator()->get('books-active-record'); $book = $books->findByPk(1); $book->setTitle('Very Interested Book'); $saved = $book->save(); } }
рдЙрджрд╛рд╣рд░рдг рд╣рдЯрд╛рдПрдВ
namespace Application\Controller; use Zend\Mvc\Controller\AbstractActionController; class IndexController extends AbstractActionController { public function indexAction () { $books = $this->getServiceLocator()->get('books-active-record'); $book = $books->findByPk(1); $deleted = $book->delete(); } }
рдЙрджрд╛рд╣рд░рдг рдЦреЛрдЬреЗрдВ
namespace Application\Controller; use Zend\Mvc\Controller\AbstractActionController; class IndexController extends AbstractActionController { public function indexAction () { $books = $this->getServiceLocator()->get('books-active-record'); return array( 'books' => $books->find(function(\Zend\Db\Sql\Select $select){ $select->where(array('is_active' => 1)); $select->limit(10); }), ); } }
рдШрдЯрдирд╛ рдХрд╛ рдЙрджрд╛рд╣рд░рдг
namespace Application\Controller; use Zend\Mvc\Controller\AbstractActionController; class IndexController extends AbstractActionController { public function indexAction () { $this->getEventManager()->getSharedManager()->attach( 'Application\Entity\Book', 'save.pre', function($e) { $book = $e->getTarget(); if ($book->isNew()) { $book->setTitle($book->getTitle() . ' - new'); } }); $books = $this->getServiceLocator()->get('books-active-record'); $book = $books->create(array( 'title' => 'test title', 'author' => 'test author', )); $saved = $book->save(); } }
рдЙрдкрд▓рдмреНрдз рдШрдЯрдирд╛рдПрдБ
- find.pre
- find.post
- save.pre
- save.post
- delete.pre
- delete.post
рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдирд┐рдпреЛрдЬрд┐рдд
- PHPUnit рдЯреЗрд╕реНрдЯ
- рд╕рдВрдмрдВрдз рдкреНрд░рдмрдВрдзрди (рдПрдХ-рд╕реЗ-рдПрдХ, рдПрдХ-рд╕реЗ-рдПрдХ, рдХрдИ-рд╕реЗ-рдХрдИ)
- рдкрд╛рдпрд╛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рд╕реБрдзрд╛рд░
рд╕рдВрджрд░реНрдн
https://github.com/alxsad/zf2activerecordhttps://packagist.org/packages/alxsad/zf2activerecordрдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред