scr*_*fix 4 php laravel laravel-5 laravel-5.2
更新2016年1月26日美国东部时间晚上10:30:通过大量的Google搜索,我发现我误解了如何利用命名空间和自定义类.如果其他人有这个问题,请阅读本教程:http://www.techigniter.in/tutorials/how-to-add-custom-class-in-laravel-5/ 这很简单,很容易理解.它帮助解决了这个问题,并将我带到了下一个错误......:D
问题: 尝试重新安装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/"
}
},
Run Code Online (Sandbox Code Playgroud)
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());
}
}
Run Code Online (Sandbox Code Playgroud)
additionalPCs.php
<?php
namespace App\Library;
class additionalPCs extends additionalComputer {
public function display() {
return $this->displayMenu();
}
}
Run Code Online (Sandbox Code Playgroud)
additionalComputer.php(我也尝试过使用App\Library\additionalComputer;)
<?php
namespace App\Library;
use App\Library\AdditionalPCs\additionalComputer;
class additionalPCs extends additionalComputer {
public function display() {
return $this->displayMenu();
}
}
Run Code Online (Sandbox Code Playgroud)
每个类的命名空间是该类的容器目录,而不是类文件本身。
在命名空间的AdditionalPCs.php文件中,摆脱\ AdditionalPCs,它应该是:
namespace App\Library;
Run Code Online (Sandbox Code Playgroud)
更新后更新:
您想使用additionalComputer,因此您必须导入其命名空间,如下所示:
<?php
namespace App\Library;
use App\Library\additionalComputer;
class additionalPCs extends additionalComputer {
public function display() {
return $this->displayMenu();
}
}
Run Code Online (Sandbox Code Playgroud)
(为additionalComputer添加了名称空间导入)
原帖:
你的图书馆有这一行:
namespace App\Library\AdditionalPCs;
Run Code Online (Sandbox Code Playgroud)
要使用AdditionalPC(例如您的控制器),请更改:
use App\Library\AdditionalPCs;
Run Code Online (Sandbox Code Playgroud)
至
use App\Library\AdditionalPCs\AdditionalPCs;
Run Code Online (Sandbox Code Playgroud)
第一个
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
| 归档时间: |
|
| 查看次数: |
16725 次 |
| 最近记录: |