Php symfony4.3添加带有类的自定义文件夹
在我的默认symfony4结构中,我想添加lib文件夹,在那里我有额外的类。比如说:Php symfony4.3添加带有类的自定义文件夹,php,symfony,symfony4,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中有一个类导
-bin
-config
-lib
- Importer.php
...(other files with classes)
-public
-src
- Controller
- TestController.php
- Entity
- Form
...
...
但我不知道以后如何使用我的文件,即:Importer.php
假设Importer.php中有一个类导入器。如果我尝试从TestController.php使用它,我会得到:
试图从命名空间库加载类导入器。是吗
忘记另一个命名空间的use语句
TestController.php具有
use Importer;
PhpStorm自动检测到在顶部指定。我还尝试在Importer.php文件中添加名称空间,例如:
namespace lib;
然后在TestController中:
use lib\Importer;
但它产生了同样的结果
最后,在阅读了有关服务的内容后,我尝试将该文件添加到config/services.yaml
lib\:
resource: '../lib/Importer.php'
这给出了同样的结果
做什么,如何生活?首先要了解
接下来,请阅读有关的文章
为文件夹选择一个前缀,比如Lib。确保lib文件夹中的所有文件都具有正确的命名空间。例如,导入器类必须存储在lib\Importer.php中,并且必须具有名称空间lib;,Items\Item类必须存储在lib\Items\Item.php中,并且必须具有名称空间lib\Items\Item;等等
你的文件准备好了。只需要通知Symfony他们的情况
Symfony使用作曲家的自动加载器,所以请检查。然后在composer.json中添加用于自动加载的新文件夹:
它说lib文件夹中的所有类都有自己的独立文件,并且它们的名称空间中有lib前缀,名称空间的其他部分类似于目录结构
接下来,您需要清除autoloader的缓存。运行控制台:
composer composer dump-autoload
最后,您可以使用您的类:
use Lib\Importer;
$importer = new Importer;
您还可以将文件添加到。首先阅读
接下来,请阅读有关的文章
为文件夹选择一个前缀,比如Lib。确保lib文件夹中的所有文件都具有正确的命名空间。例如,导入器类必须存储在lib\Importer.php中,并且必须具有名称空间lib;,Items\Item类必须存储在lib\Items\Item.php中,并且必须具有名称空间lib\Items\Item;等等
你的文件准备好了。只需要通知Symfony他们的情况
Symfony使用作曲家的自动加载器,所以请检查。然后在composer.json中添加用于自动加载的新文件夹:
它说lib文件夹中的所有类都有自己的独立文件,并且它们的名称空间中有lib前缀,名称空间的其他部分类似于目录结构
接下来,您需要清除autoloader的缓存。运行控制台:
composer composer dump-autoload
最后,您可以使用您的类:
use Lib\Importer;
$importer = new Importer;
您还可以将文件添加到。您需要更新composer.json文件,以便自动加载程序可以为您找到新文件。您可能会想花一些时间学习名称空间以及如何使用它们。@Cerad在我要学习的内容列表中……出于好奇:在根级别添加单独的文件夹有什么必要?为什么不按照最佳实践建议使用它呢?这是其他项目也需要的某种公共依赖项吗?@Nick这确实是公共依赖项,它除了被应用程序使用外,还被服务器上的cron直接使用。您需要更新composer.json文件,以便自动加载程序能够为您找到新文件。您可能会想花一些时间学习名称空间以及如何使用它们。@Cerad在我要学习的内容列表中……出于好奇:在根级别添加单独的文件夹有什么必要?为什么不按照最佳实践建议使用它呢?这是一种公共依赖吗?其他项目也需要这种公共依赖吗?@Nick这确实是一种公共依赖,它除了被应用程序使用之外,还被服务器上的cron直接使用。