我觉得我已经彻底搜索了整个互联网,但似乎无法想象这一个。我正在使用Silex(最新版本),似乎无法弄清楚如何使用Silex的ServiceProvider系统返回一个类的实例供使用。
我知道如何创建基本服务提供商。
我不知道该怎么做才能让这个服务提供商使用自定义类。我已经尝试了我能想到或在网上找到的所有内容。问题的一部分是Silex关于此的文档并不是非常广泛,并且在对它的完成方式(或者看起来如此)进行了相当大的改变之前,已经询问/回答了大多数关于此类问题的问题。答案不是最新的。
所以,简单地说: 我想使用Silex的$ app ['myclass']类型系统来访问我的类,这样我就可以做一些事情,比如$ app ['myclass'] - > myMethod()。
我挂断的是这个,虽然我可以创建服务提供商,但我无法弄清楚如何让服务提供商识别该类。我已经尝试使用composer auto-load pso-0设置完整的命名空间,并尝试使用MyClass / MyClass类型的东西。
哈哈,基本上,因为文档很少,所以可能有任何一部分我做错了。有人会编写一个当前的分步流程来将自定义库/类连接到$ app变量吗?我认为这不仅有助于我,也有助于其他人。谢谢!
答案 0 :(得分:7)
对我而言,就像你在课堂加载方面遇到的问题一样。这曾经是由silex中的autoload
服务处理的。然而,该服务已被删除,有利于作曲家的自动加载。
您在composer.json
中指定了自动加载功能。如果您不熟悉作曲家,请阅读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
以重新转储自动加载文件,您应该可以访问您的课程。