2016-01-27 129 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