【问题标题】: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() 方法吗?

标签: php


【解决方案1】:

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

【讨论】:

  • 那么为什么当我删除extends Database 部分并给我错误Fatal error: Uncaught Error: Call to undefined method Username::some() in ...我>?
  • @user13491419 如果你想知道幕后到底发生了什么,我推荐this answer about late binding。简短的版本是在引用它们之前总是声明你的类(或接口等),尽管 PHP 在某些情况下可以解决这个问题(特别是在没有继承的情况下)。
猜你喜欢
  • 2018-09-06
  • 2021-07-10
  • 1970-01-01
  • 2018-01-01
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 2018-05-11
  • 2020-11-09
相关资源
最近更新 更多