首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >新类名"Song“扩展Laravel 5型号类

新类名"Song“扩展Laravel 5型号类
EN

Stack Overflow用户
提问于 2015-12-26 18:50:32
回答 2查看 559关注 0票数 0

我创造了一个叫“歌”的新班。

类app/ClassName的位置,所以它的app/ so s.php

代码语言:javascript
复制
<?php
namespace App;
use Illuminate\Database\Eloquent\Model as Eloquent;
class Song extends Eloquent {
//put your code here
}

我的路线:

代码语言:javascript
复制
Route::get('/','SongsController@index');

我的SongsController.php位置:app/Http/controller/Http sController.php

想要对应我的数据库表名为“歌曲”。

代码语言:javascript
复制
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Song;

class SongsController extends Controller
{

public function index()
{
$songs = Song::get();

return view('pages.songsList',compact('songs'));
}

现在使用所有这些代码,我得到了一个简单的错误,如下所示,

代码语言:javascript
复制
FatalErrorException in SongsController.php line 19:
Class 'App\Song' not found

如果我不加类的话,"Song“模型工作得很好。代码如下

代码语言:javascript
复制
DB::table('songs)->get();

谢谢,对不起,我是拉瓦拉尔5号的新手。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-26 19:04:53

您的类名为Song,文件名为songs.php。您需要将文件命名为Song.php,以便找到它。

Composer生成一个PSR-4兼容的自动加载程序。

您会注意到在您的composer.json文件中有这样一个节

代码语言:javascript
复制
"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app/"
    }
},

这告诉Autoloader,App命名空间中的任何内容都应该在app目录中找到。

调用类时,任何已注册的自动加载程序都会尝试加载类文件。这意味着除非另有规定,否则App\Song将查找app/Song.php

从说明书中

当加载与完全限定类名相对应的文件时. 在完全限定的类名(“名称空间前缀”)中,一个或多个领先名称空间和子命名空间名称(不包括主导名称空间分隔符)的连续系列至少对应于一个“基本目录”。 “命名空间前缀”后面的连续子命名空间名称对应于“基本目录”中的子目录,其中名称空间分隔符表示目录分隔符。子目录名必须与子命名空间名称的大小写相匹配。 终止类名对应于以.php结尾的文件名。文件名必须与终止类名的大小写匹配。

票数 2
EN

Stack Overflow用户

发布于 2015-12-26 19:03:58

尝试以下命令:

代码语言:javascript
复制
composer dump-autoload -o

编辑:这个命令用新的类更新自动加载程序。更多信息:https://getcomposer.org/doc/03-cli.md#dump-autoload

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34474221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档