2017-04-07 23 views
2

나는 표현형 젠드를 사용하여 데이터베이스를 어떻게 처리하는지 살펴 보려고합니다. 나는 this을보고 있었지만 명확하지 않습니다. 나는 composer를 사용하여 zend-db를 설치했고 dependencies.global.php에 라인을 추가하고 어댑터를 얻기 위해 factory 클래스의 컨테이너를 사용했지만 실제 작업 클래스에서 액세스하는 방법에 대해서는 언급하지 않았다. 어댑터 개체가 다른 클래스의 범위를 벗어 났으므로 어떤 일이 벌어지는 지 모르겠습니다.젠드 표현식 - 젠드 db

누구나 처음부터 끝까지 실제로 SQL에 연결하고 쿼리 할 수있는 명확하고 명확한 예가 있습니까? 당신은 당신의 설정 공급자에

HomePageFactory.php 

    public function __invoke(ContainerInterface $container) 
{ 
    $router = $container->get(RouterInterface::class); 
    $template = $container->has(TemplateRendererInterface::class) ? $container->get(TemplateRendererInterface::class) : null; 

    $adapter = $container->get(Adapter::class); 
    $usersTable = $container->get(Table\UsersTable::class); 


    return new HomePageAction($router, $template,$adapter,$usersTable); 
} 

HomePageAction.php

class HomePageAction implements ServerMiddlewareInterface 
{ 
/** 
* @var Router\RouterInterface 
*/ 
private $router; 

/** 
* @var null|Template\TemplateRendererInterface 
*/ 
private $template; 

/** 
* @var Adapter 
*/ 
private $dbAdapter; 

/** 
* @var UsersTable 
*/ 
private $usersTable; 

/** 
* HomePageAction constructor. 
* @param Router\RouterInterface $router 
* @param Template\TemplateRendererInterface|null $template 
* @param Adapter $adapter 
* @param UsersTable $usersTable 
*/ 
public function __construct(Router\RouterInterface $router, Template\TemplateRendererInterface $template = null, Adapter $adapter, Table\UsersTable $usersTable) 
{ 
    $this->router  = $router; 
    $this->template = $template; 
    $this->dbAdapter = $adapter; 
    $this->usersTable = $usersTable; 

} 

:

+0

Zend/D를 통합하는 예제를 얻었습니까? 마지막에 표현력이있는 b? 제가 같은 주제로 고심하고 있기 때문에 도움이 될 것입니다. – Leo

답변

0

시도가 공장을 통해 DB 클래스를 주입 골격 응용 프로그램에 대한 예를 따라, 당신은 이런 식으로 뭔가를 할 수 귀하의 테이블 u는 공장으로 종속성을 설정해야합니다 EX :

'factories' => [ 

      Table\UsersTable::class => function($container) { 
       $dbAdapter   = $container->get(AdapterInterface::class); 
       $resultSetPrototype = new ResultSet(); 
       $resultSetPrototype->setArrayObjectPrototype(new Model\Users()); 
       $tableGateway  = new TableGateway('users', $dbAdapter, null, $resultSetPrototype); 
       return new Table\UsersTable($tableGateway); 
      }, 

     ], 
+0

이 구현에서는 UserTable.php가 App/src/models /에 만들어져 있어야 제공 될 수 있습니다. – Leo

+1

어디로 가고 싶습니까? :) 그렇습니다. – rafaelphp

+0

제발, 제발, 대답을 업데이 트하고 그 UsersTable 클래스와 사용자 모델의 예를 들어 주시겠습니까? 간단한 쿼리를 처리하는 방법은 무엇입니까? 얼마나 많은 시도가 프레임웍을 만들려고 노력했는지 잃었습니다. – Leo