Zend рдлреНрд░реЗрдорд╡рд░реНрдХ 2 (рдЗрд╕рдХреЗ рдмрд╛рдж zf2) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд░реАрд╕реНрдЯрдлреБрд▓ рдПрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рдЧрд╛рдЗрдбред
рд╣рдореЗрдВ zf2 v2.3@dev, рд╕рд╛рде рд╣реА Doctrine 2 ORM рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рддреЛ, рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдПрдкреАрдЖрдИ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдХрд░ рд╢реБрд░реВ рдХрд░реЗрдВ:
mkdir -pv zf2-api/{config/autoload,public,module/v1/{config,src/v1/{Controller,Service,Entities}}}
рд╕рдВрдЧреАрддрдХрд╛рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
curl -sS https://getcomposer.org/installer | php
рд╣рдореЗрдВ рдРрд╕реА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрдВрдкреЛрдЬрд░.рдЬреЙрди рдмрдирд╛рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
"require": { "php": ">=5.4", "zendframework/zendframework": "2.*@dev", "doctrine/doctrine-orm-module" :"0.*" }
рд╣рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд░реЗрдВрдЧреЗ / zf2 рдХрдВрдХрд╛рд▓ рдХреЗ рд╕рд╛рде index.php рдореВрд▓реНрдпрд╛рдВрдХрди:
<?php chdir(dirname(__DIR__));
рд╣рдо рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП application.config.php рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдкреАрдЖрдИ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░ v1 рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛:
return array(
рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдореЙрдбреНрдпреВрд▓ / v1 / рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдореБрдЦреНрдп рд╡рд░реНрдЧ рдмрдирд╛рддреЗ рд╣реИрдВред
<?php namespace v1; class Module { 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__, ), ), ); } }
рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЙрдбреНрдпреВрд▓ / v1 / config / рдореЙрдбреНрдпреВрд▓.config.php:
<?php namespace v1; return array( 'router' => array( 'routes' => array( 'api' => array( 'type' => 'Segment', 'options' => array( 'route' => '/api/v1/[:action][/:id]', 'constraints' => array( 'action' => '[a-zA-Z][a-zA-Z0-9_-]*/?', ), 'defaults' => array( '__NAMESPACE__' => 'v1\Controller', 'controller' => 'v1\Controller\Index', 'action' => 'index' ), ), ), ), ), 'controllers' => array( 'invokables' => array( 'v1\Controller\Index' => 'v1\Controller\IndexController', ), ), 'view_manager' => array( 'strategies' => array( 'ViewJsonStrategy', ), 'display_not_found_reason' => true, 'display_exceptions' => true, 'doctype' => 'HTML5' ), 'doctrine' => array( 'driver' => array( __NAMESPACE__ . '_driver' => array( 'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 'cache' => 'array', 'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Entity') ), 'orm_default' => array( 'drivers' => array( __NAMESPACE__ . '\Entity' => __NAMESPACE__ . '_driver' ) ) ), ),
рдФрд░ рд╣рдорд╛рд░реЗ рдПрдХрдорд╛рддреНрд░ рдореЙрдбреНрдпреВрд▓ / v1 / src / v1 / рдирд┐рдпрдВрддреНрд░рдХ / IndexController рдирд┐рдпрдВрддреНрд░рдХ:
<?php namespace v1\Controller; use Zend\Mvc\Controller\AbstractRestfulController, Zend\View\Model\JsonModel; class IndexController extends AbstractRestfulController { public function indexAction() { $em = $this->getServiceLocator()->get('doctrine.entitymanager.orm_default'); $testEntity = $em->getRepository('v1\Entity\Test')->findAll();
рдЗрд╕рдХреЗ рдмрд╛рдж, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ cli рд╕рд░реНрд╡рд░ php -S localhost: 8000 рдЪрд▓рд╛рдПрдВ, рдФрд░ рд▓рд┐рдВрдХ
рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ: 8000 / api / v1 / index, рд╣рдореЗрдВ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓рддреА рд╣реИред
рдкреБрдирд╢реНрдЪ
github:
zf2-apiрдпрджрд┐ рдЖрдкрдХреЗ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдЯрд┐рдкреНрдкрдгреА рд▓рд┐рдЦреЗрдВ, рдореБрдЭреЗ рдЙрддреНрддрд░ рджреЗрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред
рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдореИрдВ рдПрдХ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддрд╛ рд╣реВрдВред