我正在尝试使用Zend Expressive,现在正在学习如何处理数据库。我看了一下这个网站,但是不太清楚。我使用composer安装了zend-db,并添加了一个依赖项的全局php文件,在工厂类中使用容器来获取适配器。但是在实际操作类中没有详细说明如何访问它,因为适配器对象与其他类不在同一个范围内,所以我不知道发生了什么。
有谁能提供一个清晰明了的从头开始连接和查询SQL的示例吗?
有谁能提供一个清晰明了的从头开始连接和查询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;
}
在您的配置提供程序中,您需要将依赖项配置为工厂,例如:在您的表所在的配置提供程序上。
'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);
},
],