致命错误:未捕获的错误:未找到类“用户名”

Posted

技术标签:

【中文标题】致命错误:未捕获的错误:未找到类“用户名”【英文标题】:Fatal error: Uncaught Error: Class 'Username' not found in 【发布时间】:2020-09-03 02:01:45 【问题描述】:

我有以下代码,我想通过$object = new Username 实例化class 用户名Username 类扩展为 Database 类(这是require_once() 命令中的类)。我收到错误致命错误:未捕获的错误:在....中找不到类“用户名”。。但是,当我将 class Username extends Database 更改为 class Username(即,当它不再扩展到类 Database 时),我收到错误 Fatal error: Uncaught Error: Call to undefined method用户名::some() in....。我不知道我的错误是什么..

<?php
require_once 'database.class.php';

if(isset($_POST['some']))
    $sql = 'SELECT * FROM noti WHERE name=:name';
    $params = [
        'name' => $_POST['some']
    ];
    $object = new Username;
    $number = $object->some($sql, $params);
    if($number>0)
        echo 'Username Exists.';
    
    else
        echo '';
    


class Username extends Database
    public function some($sql, $params)
        return $this->num_rows($sql, $params);
    

【问题讨论】:

尝试将 Username 类放在 if 语句之上 你能告诉我们你在用户名中的 some() 方法吗? 【参考方案1】:

这是因为您尝试实例化 Username 的逻辑高于定义它的代码。因此,当您尝试实例化它时,它还没有定义。将class 定义放在其实例化之前。

【讨论】:

那么为什么当我删除extends Database 部分并给我错误Fatal error: Uncaught Error: Call to undefined method Username::some() in ...我>? @user13491419 如果你想知道幕后到底发生了什么,我推荐this answer about late binding。简短的版本是在引用它们之前总是声明你的类(或接口等),尽管 PHP 在某些情况下可以解决这个问题(特别是在没有继承的情况下)。

以上是关于致命错误:未捕获的错误:未找到类“用户名”的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - 致命错误:未捕获的错误:找不到类'Auth'

致命错误:未捕获的错误:找不到类“App\Config”

为啥致命错误:未捕获的错误:找不到类“Illuminate\Foundation\Application”

致命错误:未捕获的 ReflectionException:类配置不存在

PHP致命错误:未捕获错误:找不到类

为啥我收到 PHP 致命错误:未捕获的错误:找不到类“MyClass”? [复制]