我是silex,uploadcare和github的新手。我正在youtube上关于将图像上传到我的社交网站的教程。 但我一直收到这个错误。
以下是我的一些代码。
namespace KLEIDDER\Providers;
use Silex\Application;
use Silex\ServiceProviderInterface;
class UploadcareProvider implements ServiceProviderInterface
{
public function register(Application $app)
{
$app['uploadcare'] = $app->share(function() use ($app) {
return new \Uploadcare\Api('6854166a3c2cd467beb8', '416e1509f07b6b17cbe0');
});
}
public function boot(Application $app)
{
}
}
$app->register(new KLEIDDER\Providers\UploadcareProvider);
$app->get('/', function() use ($app) {
var_dump($app['uploadcare']);
die();
我最近被告知我应该使用Pimple,所以我尝试了
namespace KLEIDDER\Providers;
use Silex\Application;
use Pimple\ServiceProviderInterface;
class UploadcareProvider implements ServiceProviderInterface
{
public function register(Application $app)
{
$app['uploadcare'] = $app->share(function() use ($app) {
return new \Uploadcare\Api('6854166a3c2cd467beb8', '416e1509f07b6b17cbe0');
});
}
public function boot(Application $app)
{
}
}
但现在我收到此错误,致命错误:KLEIDDER \ Providers \ UploadcareProvider :: register()的声明必须与Pimple \ ServiceProviderInterface :: register(Pimple \ Container $ pimple)兼容
答案 0 :(得分:1)
看起来您已经安装了Silex 1.x代码,并安装了Silex 2.x.
版本ServiceProviderInterface
之间从Silex转出,你需要使用Pimple的一个:
use Pimple\ServiceProviderInterface;
更新后续问题。
显然Pimple\ServiceProviderInterface
与Silex\ServiceProviderInterface
不同,因此您需要相应地重新编码您的课程。主要区别在于register
方法的方法签名已经等效地更改了。在Silex下,它是:
public function register(Silex\Application $app)
现在使用Pimple的一个是:
public function register(Container $pimple)
幸运的是,如果有人试图继续使用方法签名的Silex版本,PHP会给出一条错误消息,告诉您确切的错误; - )
另请注意,Pimple的ServiceProviderInterface也不再需要boot
方法。