zend expressive - zend db



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

有人从头到尾都有良好而清晰的例子,真正能够连接和查询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( TableUsersTable::class );

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

首页操作.php

class HomePageAction implements ServerMiddlewareInterface
{
/**
 * @var RouterRouterInterface
 */
private $router;
/**
 * @var null|TemplateTemplateRendererInterface
 */
private $template;
/**
 * @var Adapter
 */
private $dbAdapter;
/**
 * @var UsersTable
 */
private $usersTable;
/**
 * HomePageAction constructor.
 * @param RouterRouterInterface $router
 * @param TemplateTemplateRendererInterface|null $template
 * @param Adapter $adapter
 * @param UsersTable $usersTable
 */
public function __construct( RouterRouterInterface $router, TemplateTemplateRendererInterface $template = null, Adapter $adapter, TableUsersTable $usersTable )
{
    $this->router     = $router;
    $this->template   = $template;
    $this->dbAdapter  = $adapter;
    $this->usersTable = $usersTable;
}

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

'factories'  => [
            TableUsersTable::class => function($container) {
                $dbAdapter          = $container->get( AdapterInterface::class );
                $resultSetPrototype = new ResultSet();
                $resultSetPrototype->setArrayObjectPrototype( new ModelUsers() );
                $tableGateway       = new TableGateway('users', $dbAdapter, null, $resultSetPrototype);
                return new TableUsersTable($tableGateway);
            },
        ],

最新更新