Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果不使用整个框架,如何加载Symfony组件配置文件?_Php_Symfony - Fatal编程技术网

Php 如果不使用整个框架,如何加载Symfony组件配置文件?

Php 如果不使用整个框架,如何加载Symfony组件配置文件?,php,symfony,Php,Symfony,我正在尝试使用Symfony路由器和DI组件引导一个简单的微服务类型的应用程序,但没有使用Symfony/skeleton包作为起点 路由可以工作,但DI不行。看一下,不清楚我的应用程序实际如何使用config/services.yaml文件。我不明白它是什么时候加载的,如何加载的,以及我如何告诉Symfony使用services.php 类似地,如果我安装新的composer软件包,它们会在config/packages/中转储一些.yamlconfig文件。然后我必须使用config组件手动

我正在尝试使用Symfony路由器和DI组件引导一个简单的微服务类型的应用程序,但没有使用
Symfony/skeleton
包作为起点

路由可以工作,但DI不行。看一下,不清楚我的应用程序实际如何使用
config/services.yaml
文件。我不明白它是什么时候加载的,如何加载的,以及我如何告诉Symfony使用
services.php


类似地,如果我安装新的composer软件包,它们会在
config/packages/
中转储一些
.yaml
config文件。然后我必须使用
config
组件手动加载这些文件吗?

所有这些通常都发生在应用程序内核中(在Symfony应用程序中),由“front controller”脚本(例如
public/index.php
)实例化和引导

在:

这将加载
config/packages
目录中的所有
*.yaml
文件,并加载文件
config/services.php
,但仅当文件
config/services.yaml
不存在时加载

如果您在不使用框架的情况下构建自己的应用程序,则必须在对应用程序有意义的地方加载这些文件

随着Symfony 5占地面积的减少,构建您自己的可能并不特别划算,您可以使用最小的
Symfony/skeleton
,并且您已经有了一个非常“微型”的起点,而无需花费时间来决定这些事情


如果出于特定要求或作为学习练习,您决定“构建自己的”,我建议您阅读文档的这一部分:。这是一种非常有用的方法,可以了解多个部分是如何组合在一起的。

我想创建一个独立的PHP应用程序,而不是Symfony应用程序,并使用路由和依赖项注入组件。我现在明白了,在这种情况下,我必须手动加载配置文件。在DI组件的情况下,这是否意味着我不能在ie.construcor方法中键入hint类,而必须首先在容器中手动注册它们?至少这里似乎有这样的建议:您可以很好地使用autowire。您只需要按照说明启用自动布线。如果您不想手动定义每个服务,出于好奇,您可能希望
加载()
它们:有什么好的理由不使用更多的组件吗?手动实现您需要的所有内容可能需要更多的工作,我不认为“更多组件”会带来如此巨大的性能收益,您的意思是将我的微服务创建为Symfony应用程序?我想我低估了在独立应用程序中使用组件的学习曲线。关于你问题的最后一段,任何在config/packages下存放文件的包实际上都是一个Symfony包,专门设计用于Symfony框架内。所以答案是:您基本上无法使用这些特定的软件包。配置是框架的重要组成部分。如果您还没有,我建议您阅读关于配置的内容,或者从那里开始。仍然使用框架捆绑包,但让您或多或少地完全控制配置。只是想指出,您问题中的DI链接指向框架文档。如果您想了解如何使用DI单机版,请参阅。
protected function configureContainer(ContainerConfigurator $container): void
{
    $container->import('../config/{packages}/*.yaml');
    $container->import('../config/{packages}/'.$this->environment.'/*.yaml');

    if (is_file(\dirname(__DIR__).'/config/services.yaml')) {
        $container->import('../config/services.yaml');
        $container->import('../config/{services}_'.$this->environment.'.yaml');
    } elseif (is_file($path = \dirname(__DIR__).'/config/services.php')) {
        (require $path)($container->withPath($path), $this);
    }
}