Php 未找到Laravel 5.2类,但存在具有命名空间的类
美国东部时间2016年1月26日10:30更新:通过大量的谷歌搜索,我发现我误解了如何利用名称空间和自定义类。如果其他人有此问题,请阅读本教程: 它很短,很容易理解。这有助于解决此问题,并将我推向下一个错误…:D 问题: 正在尝试新安装Laravel 5并将我的Laravel 4代码转换为Laravel 5 请求:请帮助我查找错误并提供有关如何更正的详细说明 错误: additionalPCs.php第4行中的FatalErrorException: 找不到类“App\Library\AdditionalPCs\additionalComputer” 注意:我将additionalComputer.php文件放在它自己的目录App\Libary\additionalPCs中,并直接放在App\Libary目录中。这两个地方产生相同的错误。我正在使用名称空间。(可能不正确) Composer.jsonPhp 未找到Laravel 5.2类,但存在具有命名空间的类,php,laravel,laravel-5,laravel-5.2,Php,Laravel,Laravel 5,Laravel 5.2,美国东部时间2016年1月26日10:30更新:通过大量的谷歌搜索,我发现我误解了如何利用名称空间和自定义类。如果其他人有此问题,请阅读本教程: 它很短,很容易理解。这有助于解决此问题,并将我推向下一个错误…:D 问题: 正在尝试新安装Laravel 5并将我的Laravel 4代码转换为Laravel 5 请求:请帮助我查找错误并提供有关如何更正的详细说明 错误: additionalPCs.php第4行中的FatalErrorException: 找不到类“App\Library\Addit
"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());
}
}
<?php
namespace App\Library;
class additionalPCs extends additionalComputer {
public function display() {
return $this->displayMenu();
}
}
每个类的命名空间都是该类的容器目录,而不是类文件本身 在名称空间的additionalPCs.php文件中,去掉\additionalPCs,它应该是:
namespace App\Library;
在发布更新后更新: 您想使用additionalComputer,因此必须导入他的命名空间,如下所示:
<?php
namespace App\Library;
use App\Library\additionalComputer;
class additionalPCs extends additionalComputer {
public function display() {
return $this->displayMenu();
}
}
要使用其他PC(例如控制器),请更改:
到
第一个AdditionalPCs
来自您的命名空间,第二个是您的类名。您的类AdditionalPCs位于子命名空间AdditionalPCs中
重要:它是新的附加PCS()
(请参见开头的A
而不是A
),它必须是您的类名,准确地说!这是一般规则
注意你的名字(区分大小写)。最好使用PSR-2中的代码约定:这不是很有效。我确实更改了几个项目,但随后又出现了另一个错误。我将使用更改为使用App\Library\AdditionalPC;并删除了additionalPCs目录,因此现在additionalPCs.php文件位于app\Library目录中。我收到下一个错误:找不到类“App\Library\AdditionalPCs\additionalComputer”。好的,所以我把additionalComputer.php文件移到app\library文件夹中,甚至尝试创建一个AdditionalPCs目录并放在那里,但都没有用。错误仍然存在。不确定它为什么要查找AdditionalPCS文件夹。我在原始帖子中添加了additionalComputer.php的代码。我的更正是正确的。我不知道,但是你更新了所有的代码吗?我仍然看到包含了错误的名称空间。;-)右侧,
App\Library\AdditionalPCs\additionalComputer
不存在。additionalComputer位于名称空间App\Library中,因此它是App\Library\additionalComputer
。我100%确定这是用户错误,而不是您的建议。我对此毫无疑问我只是在另一个班上遇到了同样的问题,它不起作用。我是全新的名称空间。我读过关于它们的文章,但这是我第一次尝试使用它们。抱歉,我没有更新stackoverflow上的代码,我只是添加了addationalComputer.php的附加代码。我将更新它的其余部分。我已经更新了错误和我在原始帖子中使用的代码。我想说的是,非常感谢您花时间仔细检查。如果我能将其中两个标记为正确,我也会将其标记为正确。谢谢您的帮助。@scrfix如果对您有帮助,请投赞成票。这是一种责任,而不是特权,你给的链接断了
<?php
namespace App\Library;
use App\Library\additionalComputer;
class additionalPCs extends additionalComputer {
public function display() {
return $this->displayMenu();
}
}
namespace App\Library\AdditionalPCs;
use App\Library\AdditionalPCs;
use App\Library\AdditionalPCs\AdditionalPCs;