PHP不能调用view中的函数($this当不在object context中的时候)


PHP can not call a functioin in veiw( $this when not in object context in )

这是类:

class abc extend def {
     public static function count_all() {
        $sql = "SELECT COUNT(*) FROM " . self::$table_name; 
        $sql= $this -> conn -> prepare($sql);
        $sql -> execute();
        return $row = $sql -> fetchAll();
    }
}

创建视图后

$abs = new abs();
$total_count = abc::count_all();
echo $total_count;

它应该回显总数但是当我回显这个时它会显示错误

Fatal error: Using $this when not in object context in

我如何解决它提前问候。

我发现我这样做是正确的,关于PHP开发步骤。

public function count_all() {
        $sql = "SELECT COUNT(*) FROM " . self::$table_name; 
        $result = $this -> conn -> prepare($sql);
        $result -> execute();
        return $total_found = $result->fetchColumn();
    }

在这个视图中调用类。

<?php echo $class->count_all(); ?>

PHP允许您通过调用类(MyClass::instanceMethod)或调用实例类方法来访问实例方法。但这不是在你的代码中完成的,它不是面向对象编程的标准。

你在静态方法中使用了$this,把你的方法改为this

 public function count_all() {
    /* Use $this->table_name for better design*/
    $sql = "SELECT COUNT(*) FROM " . self::table_name;
    $sql= $this -> conn -> prepare($sql);
    $sql -> execute();
    return $row = $sql -> fetchAll();
}

然后你可以像这样调用

$abs = new abs();
$total_count = $abs->count_all();
echo $total_count;