简短版本:Symfony文件:SomeFile.php
服务配置做什么?
最近,在Symfony项目中工作时,我在service.yaml
文件中输入了无效的服务定义。我收到了这个非常有用的错误消息
配置键"foo"不支持"/用户/alanStorm/站点/symfony-4/my-project/config/services.yaml"中的定义"App\Services\ServiceA"。允许的配置键是"别名"、"父"、"类"、"共享"、"合成"、"懒惰"、"公共"、"抽象"、"弃用"、"工厂"、"文件"、"参数"、"属性"、"配置器"、"调用"、"标记"、"装饰"、"decoration_inner_name"、"decoration_priority","autowire","autoconfiure","bind"在 /Users/alanstorm/Sites/symfony-4/my-project/config/services.yaml(它加载在资源/用户/alanStorm/站点/Symffony-4/my-project/config/services.yaml中)。
我想我以前从未见过Symfony服务的所有有效配置。我试图了解文件的配置是用于什么以及如何使用它。
我试图用它配置一个服务
App\Services\ServiceA:
file: SomeFile.php
Symfony抱怨道
警告:include_once(SomeFile.php):无法打开流:没有这样的文件或目录
我试着把一个名为
SomeFile.php
的文件放在`src/SomeFile.php,Symfony抱怨道
自动加载程序希望在文件“/Users/alanstrom/Sites/symfony-4/my project/vendor/composer/./../src/SomeFile.php”中定义类“App\SomeFile”。已找到该文件,但该类不在其中,类名或命名空间可能在/Users/alanstrome/Sites/symfony-4/my project/config/services.yaml(加载在resource/Users/alanstrom/Sites/symfony-4/my project/config/services.yaml中)中有输入错误。
因此,我在
src/SomeFile.php
中定义了一个名为App\SomeFile
的类
#File: src/SomeFile.php
namespace App;
class SomeFile {
}
Symfony加载了这个文件--但是当回到
警告:include_once(SomeFile.php):无法打开流:var/cache/dev/ContainerG6s3qUD/getServiceA2Service.php(第11行)中没有这样的文件或目录
最后,我检查了``文件,看到它包含了这一行
#File: var/cache/dev/ContainerG6s3qUD/getServiceA2Service.php
//...
include_once 'SomeFile.php';
//...
所以,我能说的最好的是这个
文件
配置是composer autoloader的某种替代品——但我找不到任何关于如何确认您的怀疑或如何使用它的文档。
有人能帮我理解这个配置字段是用于什么的吗?
多亏了一些互联网朋友的帮助,他们挖出了一些旧的留档,我现在知道了file
服务配置是为了在服务加载之前包含一个PHP。
有几件事把我绊倒了。首先——您需要使用%kernel.root\u dir%
参数才能工作
App\Services\ServiceA:
public: true
file: "%kernel.root_dir%/foo.php"
底层容器代码希望这是一个完整的路径。
特别棘手的是以下异常消息
自动加载程序期望类"App\某物文件"定义在文件"/用户/alanStorm/站点/symfony-4/my-project/供应商/作曲家/.../.../src/ile.php”。
事实证明,这与我的文件
配置没有任何关系。相反,此错误消息是以下默认service.yaml配置的结果
_defaults:
autowire: true
public: true
App\:
resource: '../src/*'
exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}'
因为我包含的文件
在src
中,Symfony的资源
配置似乎试图将其作为类文件加载。当它不是一个班级档案时,它抱怨道。然后,当文件
加载程序试图加载一个没有%kernel.root\u dir%
的路径时,事情仍然很糟糕。
如果您要一起使用这两种配置模式,您需要确保排除您的file
file
exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php,foo.php}'
部署配置文件是 Puppet 最常见的用途之一。许多服务都需要一些配置文件, 你可以让 Puppet 使用 file 资源将这些配置文件推送到客户端,如下面的代码所示: file { "/opt/nginx/conf.d/app_production.conf": source => "puppet:///modules/app/app_production.conf", } source
我想实现以下目标: 在“开发”模式下,在当前webapp中执行Spring云配置 因此,当前webapp的类路径包含对配置服务器和客户端的依赖关系: 在开发模式下,并在引导程序中具有以下属性。yml,没问题(嵌入式配置服务器已配置并启动) 当不在'dev'模式(例如spring.profiles.active=prod)时,当前的webapp不会启动:它无法自动装配我的属性(我猜嵌入式服务器是以错
我在Google cloud platform上使用Kubernetes运行thingsboard.io/docs/user-guide/install/Kubernetes/#tbyaml-file。 问题是的协议是否应该是?
我想用一些蓝牙低能耗开发工具包创建我自己的iBeacon。苹果尚未发布iBeacons的规范,然而,一些硬件开发人员已经根据AirLocate示例代码对iBeacon进行了反向工程,并开始销售iBeacon开发工具包。 那么什么是iBeacon蓝牙模式? 蓝牙低能耗使用GATT进行LE配置文件服务发现。因此,我认为我们需要知道iBeacon属性的属性句柄、属性类型、属性值,以及可能的属性权限。因此
log4j2配置的留档提供了一个相当于默认配置的好的示例XML文档: 等效文件看起来像(有效的)YAML吗?