我正在尝试在ServiceProvider中向register方法添加绑定,但我一直收到此错误:
{"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","message":"Class 'MyApp\\Providers\\App' not found","file":"\/Users\/foobar\/Dropbox\/Staff Folders\/foobar\/htdocs\/bla\/test\/app\/MyApp\/Providers\/TestServiceProvider.php","line":14}}
composer.json:
"psr-0": {
"MyApp": "app/"
}
应用程序/ MyApp的/ TestServiceProvider.php:
<?php namespace MyApp\Providers;
use Illuminate\Support\ServiceProvider;
class TestServiceProvider extends ServiceProvider {
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
App::bind('payment', function()
{
return new \app\MyApp\Providers\Payment;
});
}
}
?>
应用程序/ MyApp的/ Payment.php:
<?php namespace MyApp\Providers;
class Payment{
public function process()
{
//
}
}
?>
我如何让它工作?
答案 0 :(得分:2)
您的Payment
类绑定应该返回:
return new \MyApp\Providers\Payment;
命名空间并不反映整个目录路径,因此您不需要包含\app
。您已经将"MyApp": "app/"
添加到PSR-0规则中以映射该内容。
答案 1 :(得分:1)
此处至少有2个错误。
第一个错误(您在问题中显示的错误)是:
App::bind('payment', function()
{
return new \app\MyApp\Providers\Payment;
});
因为您的文件是MyApp\Providers
命名空间,所以您需要使用:
\App::bind
代替App:bind
,或者以这种方式在命名空间后添加use App;
:
<?php namespace MyApp\Providers;
use App;
第二个错误是@Bogdan提到的错误。而不是:
return new \app\MyApp\Providers\Payment;
你应该使用:
return new \MyApp\Providers\Payment;
但是因为这两个类在同一个命名空间中,你可以在这里使用:
return new Payment;