4

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

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

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

所以,简单说一下:我想使用 Silex 的 $app['myclass'] 类型系统来访问我的类,这样我就可以做类似 $app['myclass']->myMethod() 的事情。

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

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

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

4

1 回答 1

7

在我看来,您在加载类时遇到问题。这是过去由autoloadsilex 中的服务处理的。然而,该服务已被删除,有利于作曲家的自动加载。

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

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

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

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

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

于 2012-11-08T16:10:00.307 回答