当前位置: 首页 > 知识库问答 >
问题:

Symfony 4-自定义文件夹结构和服务

糜单弓
2023-03-14

我希望实现Nikola Posa推荐的文件夹结构。

我想要的结构类似于下面的结构。

src/
   Domain/
      User/
         UserEntity.php
         UserController.php
      Pages/
         DefaultPageController.php

其思想是在逻辑上对功能/名称空间或类似内容进行分组。我似乎得到了这个错误:

文件".../src/Controller"不存在(在: /Users/dev/Sites/web/html/沙盒/php/crud/config)在 /Users/dev/Sites/web/html/沙盒/php/crud/config/services.yaml(加载在资源/用户/dev/站点/web/html/沙盒/php/crud/config/services.yaml)。

我不确定将这些作为服务连接起来有多重要。如果我注释掉服务的App\Controller属性。yaml,它会消失。

如何在service.yaml中加载具有src/Domain/Feature/FeatureController.php结构的控制器?

共有2个答案

岳和泽
2023-03-14

我会去创建一个像Cerad建议的控制器界面。但是,由于Symfony 3.3,您不必接触内核:

services:
    _instanceof:
        YourApp\Ui\ControllerInterface:
            public: true
            tags: ['controller.service_arguments']

瞧。

孟英光
2023-03-14

当然,您可以走老路,单独定义每个控制器服务:

# config/services.yaml
Domain\Feature\FeatureController:
    tags: ['controller.service_arguments']

然而,一旦您习惯了autowire,那么拼写每个服务都是一件痛苦的事情。或者,您可以使用自动配置功能将控制器标记添加到选定的类中。首先声明一个空接口,并让控制器实现它:

interface ControllerInterface {}

class SomeController implements ControllerInterface

然后调整src/Kernel.php

# src/Kernel.php
class Kernel {
    protected function build(ContainerBuilder $container)
    {
        $container->registerForAutoconfiguration(ControllerInterface::class)
            ->addTag('controller.service_arguments');

当然,这只是解决了控制器问题。您可能会遇到许多其他与autowire相关的问题。

 类似资料:
  • 我看到了Apache NiFi的这个示例(https://medium.com/hashmapinc/creating-custom-processors-and-controllers-in-apache-nifi-e14148740ea),但仍然无法理解如何为自定义处理器和控制器服务实现打包结构。 我的目标是创建一个自定义控制器服务来使用我的多个自定义处理器。我的maven结构应该是什么样子?

  • 简介 默认的 Laravel 应用结构旨在为不同大小的应用提供一个好的起点。当然,你也可以根据自己的喜好整理应用的目录结构。 Laravel 没有严格地限制任何给定的类的位置,只要它们能够被 Composer 自动加载。 为什么没有模型目录? 当开始使用 Laravel 时,许多开发人员都因缺少 Models 目录而感到困惑。然而,缺少这样的目录是故意的。 我们发现「模型」含糊不清,因为对许多不同

  • 看一下下面的截图。 它显示了CakePHP的文件夹结构。 下表描述了每个文件夹的作用 - S.No 文件夹名称和描述 1 bin bin文件夹包含Cake控制台可执行文件。 2 config config文件夹包含CakePHP使用的(少数)配置文件。 数据库连接详细信息,引导,核心配置文件等应存储在此处。 3 logs logs文件夹通常包含您的日志文件,具体取决于您的日志配置。 4 plugi

  • CakePHP 应用程序框架提供以下几个默认顶层文件夹: bin 文件夹包含控制台可执行文件。 config 文件夹包含少许 Configuration 内核使用的文件。比如数据库 连接信息文件,引导文件,内核配置以及其他。 plugins 文件夹包含了你的应用程序所使用的 Plugins。 logs 文件夹一般包含了根据你的配置而定的日志文件。 src 文件夹将是你的应用程序的源代码的所属之地。

  • 我使用OneDrive在我工作的所有机器(家用台式机、笔记本电脑和工作电脑)之间同步我的个人项目。在我的家用电脑中,我有一个git存储库,路径如下: 在我的工作计算机中,OneDrive基位置映射到不同的路径,因此文件夹同步到: 我在git集成中使用VSCode,在我的家用计算机中一切都正常,但当我在工作计算机中使用VSCode打开repo时,它无法识别存储库。如果我打开。git目录,我可以看到w

  • 结构体(structure,缩写成 struct)有 3 种类型,使用 struct 关键字来创建: 元组结构体,总的来说是根据元组来命名。 C 语言风格的结构体 c_struct。 单元结构体,不带字段,在泛型中很有用。 // 单元结构体 struct Nil; // 元组结构体 struct Pair(i32, f32); // 带有两个字段的结构体 struct Point { x: