symfony4.3使用类添加自定义文件夹

时间:2019-07-19 13:26:16

标签: php symfony symfony4

在我的默认symfony4结构中,我想添加 lib 文件夹,该文件夹中还有其他类。像这样:

-bin
-config
-lib
  - Importer.php
  ...(other files with classes)
-public
-src
   - Controller
      - TestController.php
   - Entity
   - Form
  ...
...

但是我不知道以后如何使用我的文件(即Importer.php)。

比方说Importer.php内部只有一个 Class Importer()。如果我尝试从TestController.php使用它,我将得到:

  

试图从名称空间“ lib”加载类“ Importer”。你是否   忘记了另一个名称空间的“使用”语句?

TestController.php具有

use Importer;

在顶部指定(由PhpStorm自动检测)。我还尝试在Importer.php文件中添加名称空间,例如:

namespace lib;

,然后在TestController中:

use lib\Importer;

但是产生相同的结果。

最近阅读了有关服务的内容后,我尝试将文件添加到config / services.yaml

lib\:
    resource: '../lib/Importer.php'

给出相同结果的人...

做什么,如何生活?

1 个答案:

答案 0 :(得分:5)

首先阅读有关php namespaces的信息。

接下来阅读有关psr-4 standart的信息。

为您的文件夹选择一个前缀,例如Lib。确保lib文件夹中的所有文件都具有正确的名称空间。例如。 Importer类必须存储在lib\Importer.php中,并且必须具有namespace Lib;Items\Item类必须存储在lib\Items\Item.php中,并且必须具有{{1} }等。

您的文件已准备就绪。只需要将它们告知Symfony。

Symfony使用作曲家的自动加载器,因此请检查composer's autoload section。比在namespace Lib\Items\Item;中添加新文件夹自动加载:

composer.json

它说"autoload": { "psr-4": { "App\\": "src/", "Lib\\": "lib/" } }, 文件夹中的所有类都有各自独立的文件,其命名空间中的lib前缀,命名空间的其他部分类似于目录结构。

接下来,您需要清除自动加载器的缓存。在控制台中运行:

Lib

最后您可以使用您的课程:

composer composer dump-autoload

您还可以将文件添加到autowire