【问题标题】:Why am I getting class not found? (Laravel, PHP)为什么我找不到课程? (Laravel, PHP)
【发布时间】:2015-01-04 13:27:58
【问题描述】:

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

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;
        });
    }
}
?>

app/MyApp/Payment.php:

<?php namespace MyApp\Providers;

class Payment{

    public function process()
    {
        //
    }

}


?>

如何让它工作?

【问题讨论】:

    标签: php laravel laravel-4 namespaces service-provider


    【解决方案1】:

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

    return new \MyApp\Providers\Payment;
    

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

    【讨论】:

      【解决方案2】:

      这里至少有 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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-29
        • 2017-06-11
        • 2014-12-19
        • 1970-01-01
        • 2015-07-27
        • 2016-12-02
        相关资源
        最近更新 更多