PHP无法在视图中调用函数($this不在对象上下文中)[重复]

zynd9foi  于 12个月前  发布在  PHP
关注(0)|答案(2)|浏览(106)

此问题在此处已有答案

PHP Fatal error: Using $this when not in object context(9个回答)
Using $this when not in object context - Laravel 4 PHP 5.4.12(1个回答)
9年前关闭。
这是一个类:

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

dnph8jn4

dnph8jn41#

我发现我这样做是正确的,关于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(); ?>

n9vozmp4

n9vozmp42#

PHP允许你通过调用Class(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;

相关问题