【问题标题】:Laravel 4.1 ReflectionExceptionLaravel 4.1 反射异常
【发布时间】:2014-02-28 03:54:50
【问题描述】:

我从 Laravel 4.1 收到以下错误。

反射异常 Acme\Services\TaskCreatorService 类不存在。

提前感谢您的帮助。

下面是定义类的代码。它位于app\Acme\Services


<?php namespace Acme\Services;

use \Acme\Validators\TaskValidator;
use \Acme\Validators\ValidationException;
use \Acme\Validators\Validator;

class TaskCreatorService {

    protected $validator;

    public function __construct(TaskValidator $validator) {

        $this->validator = $validator;

    }

    public function make(array $attributes) {

        //determone whether data is valid
        if ($this->validator->isValid($attributes)) {
        Task::create([
            'title' => $attributes['title'],
            'body' => $attributes['body'],
            'user_id' => $attributes['assign']
         ]);

        return true;
        }

        throw new ValidationException('Task validation failed', $this->validator-getErrors());
        //create the new task
        //
        //if not throw exception
    }
}

我还在自动加载部分将其添加到composer.json

    "psr-0": {
        "Acme": "app/"
    }

【问题讨论】:

  • 似乎任何试图使用您的类的代码都没有配置为自动加载该命名空间
  • 正如 Antonio 在下面所说,虽然在使用 PSR-0/4 时通常不需要执行 composer dump-autoload,但您需要在第一次编辑 composer.json 时执行此操作文件来指定这个,只是为了让 Composer 真正知道这个 PSR 规则。这是这里的问题吗?

标签: php class laravel laravel-4


【解决方案1】:

对我来说,就我而言,关注确实有效!

composer dump-autoload

我在下面link找到了一点解释

希望对您有所帮助!

Laravel 对新手来说真的很难赶上,尤其是对于不了解 Symfony 或 Ruby-on-Rails 技术的人!

祝大家好运!

【讨论】:

    【解决方案2】:

    拥有你的 PSR-0 命名空间

    "Acme": "app/"
    

    你的类文件必须是:

    /var/www/appdir/app/Acme/Services/TaskCreatorService.php
    

    你必须这样做

    composer dump-autoload
    

    有一次,当您创建 PSR-0 命名空间时。检查文件

    /var/www/appdir/vendor/composer/autoload_psr0.php
    

    并检查您的命名空间是否存在。

    【讨论】:

    • 谢谢大家的帮助。在 composer.json 中添加文件后,我错过了一个逗号。以全新的思维审视我的代码的经验教训!
    猜你喜欢
    • 2018-04-15
    • 2015-11-08
    • 2017-06-18
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 2017-08-16
    • 2017-03-24
    • 1970-01-01
    相关资源
    最近更新 更多