gpt4 book ai didi

php - 如何将自定义类与 silex ServiceProvider 一起使用

转载 作者:可可西里 更新时间:2023-10-31 22:13:24 27 4
gpt4 key购买 nike

我觉得我已经搜索了整个互联网,但似乎无法弄清楚这个问题。我正在使用 Silex(最新版本),似乎无法弄清楚如何使用 Silex 的 ServiceProvider 系统返回一个类的实例以供使用。

我确实知道如何创建一个基本的服务提供者。

我不知道该怎么做的是如何让这个服务提供者使用自定义类。我已经尝试了所有我能想到的或在网上找到的东西。部分问题是 Silex 关于此的文档不​​是很广泛,并且在对它的完成方式(或看起来如此)进行相当大的更改之前,已经询问/回答了关于此类问题的大多数问题所以答案不是最新的。

所以,简单地说:我想使用 Silex 的 $app['myclass'] 类型系统来访问我的类,这样我就可以执行类似 $app['myclass']->myMethod() 的操作。

我挂断的地方是这个,虽然我可以创建一个服务提供者,但我不知道如何让服务提供者识别这个类。我已经尝试了整个命名空间的东西,设置了 Composer 自动加载 pso-0,并尝试使用 MyClass/MyClass 类型的东西。

哈哈,基本上,因为文档太少了,我可能有任何地方做错了。

有人会编写当前的分步过程来将自定义库/类连接到 $app 变量吗?我认为这不仅对我有帮助,对其他人也有帮助。谢谢!

最佳答案

在我看来,您在类加载方面遇到了问题。这是过去由 silex 中的 autoload 服务处理的事情。然而,该服务已被删除,以支持 composer 的自动加载。

您在 composer.json 中指定自动加载是正确的。如果您不熟悉 Composer ,请阅读 introduction .有关自动加载如何工作的详细信息,请参阅 the autoloading section of the basic usage chapter .

我会在这里给你一个简短的版本。确保您的文件名符合 PSR-0 命名标准。将此添加到您的 composer.json:

{
"autoload": {
"psr-0": {"Acme": "src/"}
}
}

您需要将 Acme 替换为您的命名空间,将 src 替换为您的类的基目录。例如,Acme\Foo\Bar 类将位于 src/Acme/Foo/Bar.php 中。

然后运行 ​​php composer.phar update 以重新转储自动加载文件,您应该能够访问您的类。

关于php - 如何将自定义类与 silex ServiceProvider 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13292630/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com