致命错误:未捕获的错误:未找到类“用户名”
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'
为啥致命错误:未捕获的错误:找不到类“Illuminate\Foundation\Application”