0

我正在尝试将绑定添加到我的 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}}

作曲家.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()
    {
        //
    }

}


?>

我怎样才能让它工作?

4

2 回答 2

2

你的Payment类绑定应该返回这个:

return new \MyApp\Providers\Payment;

命名空间不反映整个目录路径,因此您不需要包含\app. 您已经添加"MyApp": "app/"到 PSR-0 规则来映射它。

于 2014-11-07T18:09:02.790 回答
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;
于 2014-11-07T19:18:42.730 回答