为什么找不到“用户”类?

时间:2018-09-12 21:38:05

标签: php laravel

我正在使用Laravel构建一个PHP Web应用程序,并试图将名称和电子邮件从表单传递到我的数据库,但是它显示以下错误:

  

致命错误:未捕获的错误:在“类”中找不到“用户”   C:\ xampp \ htdocs \ MVC \ app \ controller \ home.php:20堆栈跟踪:#0   C:\ xampp \ htdocs \ MVC \ app \ core \ app.php(43):home-> create('hala',   'hala @ yahoo')#1 C:\ xampp \ htdocs \ MVC \ public \ index.php(4):   app-> __ construct()#2 {main}被抛出   C:\ xampp \ htdocs \ MVC \ app \ controller \ home.php在第20行

这是我用于主页的代码:

class home extends controller
{    
    public function index($name = '')
    {
        $this->view('home/index', ['name'=>$user->name]);
    }

    public function create($username = '', $email = '')
    {
        user::create([
            'username' => $username,
            'email'=> $email
        ]);
    }
}

和模型:

use Illuminate\Database\Eloquent\Model as Eloquent;
class user extends Eloquent 
{
    public $name;
    protected $fillable = ['username','email'];
}

我在做什么错,我该如何解决?

2 个答案:

答案 0 :(得分:2)

在控制器代码中,您需要包括user类:

require_once("user.class.php"); /* or whatever the file is named */

如果这是自动完成的,并且该类位于另一个名称空间中,则需要声明要在控制器中使用它的意图:

use \my\namespace\user;

或者仅在代码中使用完全限定的类名:

\my\namespace\user::create();

答案 1 :(得分:1)

如果您使用illuminate/database,那么您可能正在使用作曲家。为什么不添加PSR-4自动加载规则并相应地构建代码。例如。 composer.json可能看起来像这样:

{
    "name": "acme/acme",
    "description": "Acme is this and that",
    "type": "project",
    "require": {
        "php": "^7.2",
        "illuminate/database": "^5.7"
    },
    "autoload": {
      "psr-4": {
        "Acme\\": "src"
      }
    },
    "license": "proprietary"
}

运行composer install使您成为vendor/autoloader.php,这是您唯一需要的文件。您将自己的代码放在Acme(或任何选择的名称空间)中。例如。您将用户模型放在src/Model/User.php下并添加名称空间:

<?php

namespace Acme\Model;

use Illuminate\Database\Eloquent\Model as Eloquent;

class User extends Eloquent 
{
    public $name;
    protected $fillable = ['username','email'];
}

您的主文件可能看起来像这样。

<?php 
// entry point file

require_once('vendor/autoload.php');

use Acme\Model\User;
$user = new User();
// ...

很显然,您会在某个类中做出大多数逻辑,所以这应该很短。

这对于从事最新项目的人们来说似乎很明显,但是我看到太多的项目仍然具有静态文件,其中包括像以前一样的所有类。现在将您的项目移至2010年代!