首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >zend expressive - zend数据库

zend expressive - zend数据库
EN

Stack Overflow用户
提问于 2017-04-08 05:21:20
回答 1查看 1.4K关注 0票数 3

我正在尝试使用zend expressive,并正在研究如何使用数据库。我在看this,但不清楚。我使用composer安装了zend-db,它提到了在dependencies.global.php中添加一行,然后在工厂类中使用容器来获取适配器,但随后没有讨论如何在实际的操作类中访问它,所以我不知道发生了什么,因为适配器对象超出了其他类的作用域。

有没有人从头到尾都有好的和清晰的例子来实际连接和查询sql?

EN

回答 1

Stack Overflow用户

发布于 2017-04-13 01:51:01

尝试通过工厂注入你的db类,在骨架应用上学习示例,你可以这样做:

代码语言:javascript
复制
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

代码语言:javascript
复制
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;

}

在您拥有表的配置提供程序上,您必须将依赖项配置为factory EX:

代码语言:javascript
复制
'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);
            },

        ],
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43287258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档