2016-01-27 93 views
2

UPDATE 01/26/16 10:30 pm EST:通过大量的Google搜索,我发现我误解了如何利用命名空间和自定义类。如果其他人有这个问题,请阅读本教程:http://www.techigniter.in/tutorials/how-to-add-custom-class-in-laravel-5/ 它很简短,很容易理解。它帮助解决这个问题,动我一起到我的下一个错误...:dLaravel 5.2类未找到,但类中有命名空间

问题: 尝试新鲜安装Laravel 5和转换我Laravel 4码Laravel 5

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

错误: FatalErrorException在additionalPCs.php线4: 级 '应用程序\图书馆\ 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 \图书馆\ additionalComputer;)每一类

<?php 
namespace App\Library; 

use App\Library\AdditionalPCs\additionalComputer; 

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

您给的链接已损坏 – avonnadozie

回答

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; 

要使用AdditionalPCs(在例如控制器),更改:

use App\Library\AdditionalPCs; 

use App\Library\AdditionalPCs\AdditionalPCs; 

The first AdditionalPCs is from your namespace, the second is your class name. Your class AdditionalPCs is in the sub namespace AdditionalPCs.

重要:这是new AdditionalPCs()(请参阅开始A而不是a),它必须是您的类名称正好!这是一个通用的规则!

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

+0

这不是工作。我确实改变了一些项目,但是后来又带来了另一个错误。 我改变了使用App \ Library \ additionalPCs;并删除了目录additionalPCs,所以现在additionalPCs.php文件位于app \ Library目录中。 我收到了我的下一个错误:找不到类'App \ Library \ AdditionalPCs \ additionalComputer'。好吧,所以我将我的additionalComputer.php文件移动到app \ library文件夹中,甚至试图创建一个AdditionalPCs目录并放在那里无济于事。错误仍然存​​在。不知道为什么它寻找AdditonalPCs文件夹。 – scrfix

+0

我将additionalComputer.php的代码添加到原始帖子中。 – scrfix

+0

我的更正是正确的。我不知道,但你是否更新了所有的代码?我仍然看到包含错误的名称空间。 ;-) 而对,'App \ Library \ AdditionalPCs \ additionalComputer'不存在。 additionalComputer位于名称空间App \ Library中,因此它是“App \ Library \ additionalComputer”。 – schellingerht

2

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

在您的其他PC中。PHP文件的命名空间,摆脱\ AdditionalPCs,它应该仅仅是:

namespace App\Library; 
+0

如果我可以将它们中的其中两个标记为正确,我会将其标记为正确。谢谢您的帮助。 – scrfix

+0

@scrfix如果它对你有帮助,upvote它。这是一个责任不是特权upvote有用的文学 – Jonathan