Php final 关键字在添加父类时给出致命错误


Php final keyword giving fatal error when adding in parent class

我正在尝试db类中添加Final关键字以防止其他类中的某些查询函数。但是这个最后一个关键字给了我致命的错误。

Fatal error: Class user may not inherit from final class (db)

菲律宾代码

final class db{
    private $connection;
    public function __construct () {
        $host = 'localhost';
        $username = 'root';
        $password = '';
        $dbname = 'studentsyetem';      
        $this->connection = new mysqli($host, $username, $password, $dbname);
        if ($this->connection->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        }else{
            echo 'Connected';   
        }
    }
    public function insert($u_name,$u_password,$u_level){
        $sql = "INSERT INTO users (u_name, u_password, u_level, date_added) VALUES ('".$u_name."', '".$u_password."', '".$u_level."', '".date("Y-m-d H:i:s")."')";
        mysqli_query($this->connection,$sql);
    }
}
class user extends db{
    public function child() {
        echo 'user';
    }
}
$user = new user();
echo $user->child();

如果没有final关键字代码正常工作,我想知道我哪里做错了。任何人都可以指导我,我将不胜感激。

不能继承带有 final 关键字的类。任何子类都不应继承最终类。

只是为了向您展示一个例子,它解释了为什么会发生错误。 final方法不能覆盖,也不能用abstract覆盖,也不能用extends但用trait覆盖。

class foo {
   final public function Func() {
       echo "foo::Func() created";
   }
}
class bar extends foo {
   public function Func() {
       echo "foo::Func() re-written"; // it fails
   }
}