如何使用带有silex ServiceProvider的自定义类

Pet*_*ete 4 php class templating symfony silex

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

我知道如何创建基本服务提供商.

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

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

我挂了的就是这个,虽然我可以创建服务提供商,但我无法弄清楚如何让服务提供商识别这个类.我已经尝试使用composer auto-load pso-0设置完整的命名空间,并尝试使用MyClass/MyClass类型的东西.

哈哈,基本上,因为文档很少,可能有任何一部分我做错了.

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

igo*_*orw 7

在我看来,你遇到类加载问题.这是以前由autoloadsilex中的服务处理的内容.然而,该服务已被删除,有利于作曲家的自动加载.

您在正确的轨道上指定了自动加载composer.json.如果您不熟悉作曲家,请阅读介绍.有关自动加载的工作原理的详细信息,请参阅基本用法章节的自动加载部分.

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

{
    "autoload": {
        "psr-0": {"Acme": "src/"}
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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