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

Php 如何将自定义类与silex ServiceProvider一起使用,php,class,symfony,templating,silex,Php,Class,Symfony,Templating,Silex,我觉得我已经搜索了整个互联网,但似乎无法找出这一个。我正在使用Silex(最新版本),似乎不知道如何使用Silex的ServiceProvider系统返回类的实例以供使用 我知道如何创建一个基本的服务提供商 我不知道如何让这个服务提供者使用自定义类。我已经尝试了我能想到或在网上找到的一切。问题的一部分在于Silex关于这方面的文档不是很广泛,而且关于这类问题的大多数问题都是在对其处理方式(或者看起来是这样)进行相当大的更改之前提出/回答的,因此答案不是最新的 因此,简单地说: 我想使用Silex

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

我知道如何创建一个基本的服务提供商

我不知道如何让这个服务提供者使用自定义类。我已经尝试了我能想到或在网上找到的一切。问题的一部分在于Silex关于这方面的文档不是很广泛,而且关于这类问题的大多数问题都是在对其处理方式(或者看起来是这样)进行相当大的更改之前提出/回答的,因此答案不是最新的

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

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

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


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

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

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
以重新转储自动加载的文件,您应该能够访问您的类。

嗨,igor,感谢您的及时响应——很抱歉,我花了这么长时间才回来。我一直在努力完成一个不同的项目,直到现在才回到这个问题上。快速提问,当您说“将此添加到composer.json文件”时,您是指根目录中的composer.json文件吗?*即包含“web”文件夹和“供应商”文件夹的根目录。再次感谢您的帮助。我整个下午都在阅读Composer文档,但仍然无法让autoloader与类一起工作。目前我已经退出Silex,只是想让autoload在最基本的层面上工作——但似乎不能。下面是一个.zip文件,其中包含了最基本的文件。我正在尝试加载自定义类funde\Select。你能看一下并告诉我它有什么问题吗?您需要将
名称空间设置为funde位于文件顶部。