未找到Laravel 5.2类但是类名为

时间:2016-01-27 03:19:07

标签: php laravel laravel-5 laravel-5.2

UPDATE 01/26/16美国东部时间晚上10:30 :通过大量的Google搜索,我发现我误解了如何利用命名空间和自定义类。如果其他人遇到此问题,请阅读本教程:http://www.techigniter.in/tutorials/how-to-add-custom-class-in-laravel-5/ 它简短易懂。它帮助解决了这个问题,并将我带到了下一个错误......:D

ISSUE: 尝试重新安装Laravel 5并将我的Laravel 4代码转换为Laravel 5。

请求:请帮我查找错误并提供有关如何纠正错误的详细说明。

错误: additionalPCs.php第4行中的FatalErrorException: 未找到“App \ Library \ AdditionalPCs \ additionalComputer”类

注意:我已将additionalComputer.php文件放在其自己的目录App \ Libary \ additionalPCs中,并直接放入App \ Libary目录中。两个地方都会产生同样的错误。我正在使用命名空间。 (可能不正确)

Composer.json

"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app/"
    }
},

IndexController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Library\additionalPCs;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class IndexController extends Controller
{
    Protected $layout = 'master';
    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function index()
    {
        /** Wayne - 03-02-2014 - Moved for loop to a method within its own class. */
        $numberofpcs = new additionalPCs();
        $addtpcs=$numberofpcs->display();
        $this->layout->content = View::make('index')->with('addtpcs', $addtpcs)->with('businesstypelist', businesstype::dropdown())->with('contracttermlist',ContractTerm::dropdown());
    }
}

additionalPCs.php

<?php
namespace App\Library;

class additionalPCs extends additionalComputer {
    public function display() {
        return $this->displayMenu();    
    }
}

additionalComputer.php (我也尝试过使用App \ Library \ additionalComputer;)

<?php
namespace App\Library;

use App\Library\AdditionalPCs\additionalComputer;

class additionalPCs extends additionalComputer {
    public function display() {
        return $this->displayMenu();    
    }
}

2 个答案:

答案 0 :(得分:5)

更新后更新

你想使用additionalComputer,所以你必须导入他的命名空间,如下所示:

<?php
    namespace App\Library;

    use App\Library\additionalComputer;

    class additionalPCs extends additionalComputer {
        public function display() {
            return $this->displayMenu();    
        }
    }

(为additionalComputer添加名称空间导入)

原帖:

你的图书馆有这一行:

namespace App\Library\AdditionalPCs;

要使用AdditionalPC(例如您的控制器),请更改:

use App\Library\AdditionalPCs;

use App\Library\AdditionalPCs\AdditionalPCs;
  

第一个AdditionalPCs来自您的命名空间,第二个是您的类名。您的类AdditionalPCs位于子命名空间AdditionalPCs。

重要:它是new AdditionalPCs()(请参阅开头A而不是a),它必须是您的班级名称完全 !这是一般规则!

小心你的名字(区分大小写)。最好使用PSR-2中的代码约定:https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md

答案 1 :(得分:4)

每个类的命名空间是该类的容器目录,而不是类文件本身。

在命名空间的additionalPCs.php文件中,摆脱\ AdditionalPCs,它应该只是:

namespace App\Library;