首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有全栈框架的Symfony组件(第2集)[已关闭]

没有全栈框架的Symfony组件(第2集)[已关闭]
EN

Stack Overflow用户
提问于 2021-02-23 14:42:11
回答 1查看 102关注 0票数 -2

已关闭..。这个问题需要详细信息或清晰度..。它目前不接受答案。

想要改进这个问题吗?

添加详细信息并通过以下方式澄清问题编辑此帖子..。

6天前就关门了。

改进此问题

我只在我的项目中使用Symfony DI,Http,Kernel,Routing components,下面是Create your your Framework (https://symfony.com/doc/current/create\_framework/index.html)。项目,在这个项目上,我指定了@cerad是非常有帮助的。再次感谢。它可以用于服务和控制器依赖注入。

参见

没有全栈framework](https://stackoverflow.com/questions/66301368/symfony-components-without-the-full-stack-framework)的[Symfony组件

(第一集)和https://github.com/Monnomcjo/symfony-simplex但是现在我遇到了在依赖注入中实例化存储库的新困难。

我添加了symfony/orm-pack来使用ServiceEntityRepository。

更新:

正如评论中所指出的,我关心的是方法的问题。

我的问题表达得很糟糕,上下文也不够清楚。仍然在学习环境中,我尝试实现干净架构和领域驱动设计的概念。

在这种​​分区和独立性的思想中,我也试图更好地掌握我的框架,从几乎没有任何东西开始,随着我的前进,只添加我需要的东西。

在评论之后,我不再使用symfony / orm-pack,而是longer / dbal.

仍然有很多事情要做,但它是有效的。

#container.php

代码语言:javascript
复制
// Doctrine
$containerBuilder->register(\ExampleApp\Domain\Client\Entity\ClientRepository::class, \Infrastructure\Persistence\Doctrine\Client\DoctrineClientRepository::class)
    ->setArguments([new Reference('service_container')]);

$containerBuilder->register(\ExampleApp\Domain\Client\UseCase\GetClient\GetClient::class, \ExampleApp\Domain\Client\UseCase\GetClient\GetClient::class)
    ->setArguments([new Reference(\ExampleApp\Domain\Client\Entity\ClientRepository::class)]);

$containerBuilder->register(\ExampleApp\Presentation\Client\GetClientHtmlPresenter::class, \ExampleApp\Presentation\Client\GetClientHtmlPresenter::class);

$containerBuilder->register(\Infrastructure\View\GetClientView::class, \Infrastructure\View\GetClientView::class);

$containerBuilder->register(\Infrastructure\Controller\ClientController::class, \Infrastructure\Controller\ClientController::class)
    ->setArguments([
        new Reference(\ExampleApp\Domain\Client\UseCase\GetClient\GetClient::class),
        new Reference(\ExampleApp\Presentation\Client\GetClientHtmlPresenter::class),
        new Reference(\Infrastructure\View\GetClientView::class)
]);

现在可以返回了。https://github.com/Monnomcjo/symfony-simplex也会更新。

下一步,添加类型为services.yaml的.env和conf文件

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-23 19:35:21

因为你现在的问题是失踪doctrine.orm.entity_manager

我认为要了解Symfony是如何做到这一点的,最好的方法就是看看DoctrineBundle。特别是在DependencyInjection/DoctrineExtension.phpConfiguration从其接收配置值。您可能还想看看

服务definitions](https://github.com/doctrine/DoctrineBundle/blob/2.2.x/Resources/config/orm.xml#L100-L102) [..。

扩展类接受通过配置进行验证的配置(通常在您的config/package/trustine.yaml中),然后更新Resources/config下的服务定义。这种方法相当复杂,但它将帮助您了解Symfony中的事物是如何联系在一起的。

或者,您可以查看信条[ Docs](https://www.doctrine-project.org/projects/doctrine-orm/en/2.8/tutorials/getting-started.html#obtaining-the-entitymanager) ]

要了解如何获取EntityManager,然后将其转换为Symfony Service Container注册:

代码语言:javascript
复制
$isDevMode = true;
$proxyDir = null;
$cache = null;
$useSimpleAnnotationReader = false;
$config = Setup::createAnnotationMetadataConfiguration(array(__DIR__."/src"), $isDevMode, $proxyDir, $cache, $useSimpleAnnotationReader);
// or if you prefer yaml or XML
//$config = Setup::createXMLMetadataConfiguration(array(__DIR__."/config/xml"), $isDevMode);
//$config = Setup::createYAMLMetadataConfiguration(array(__DIR__."/config/yaml"), $isDevMode);

// database configuration parameters
$conn = array(
    'driver' => 'pdo_sqlite',
    'path' => __DIR__ . '/db.sqlite',
);

// obtaining the entity manager
$entityManager = EntityManager::create($conn, $config);

您可以在上面的服务定义链接中看到EntityManager::create。如何在您的应用程序中做到这一点,很大程度上取决于您希望将其构建为与Symfony的距离有多近,以及您希望围绕Doctrine配置什么以及如何配置。

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

https://stackoverflow.com/questions/66328281

复制
相关文章

相似问题

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