使用函数和静态方法

时间:2017-01-13 15:05:11

标签: php function static self construct

在表类中我想使用简单函数而且还要使用静态函数,我该怎么办? 这是我当前的代码(不起作用)

在我的控制器中,我只想做:Table::get('posts')直接调用函数check_table($table)

<?php
namespace Fwk\ORM;
use Fwk\Application;
use Fwk\Database\Database;

class Table extends Application {

    public function __construct()
    {
        $this->db = new Database();
    }

    public static function get($table) {
        if($this->check_table($table)) {
            return "ok";
        }

    }
    public function check_table($table) {
        $r = $this->$db->query("SELECT 1 FROM $table");
        return $r;
    }

}
?>

2 个答案:

答案 0 :(得分:0)

您必须准确理解static的含义。当你将一个方法声明为静态时,你实际上是在说#34;这个方法可以直接调用,而不需要实际实例化它的类&#34;。因此,当您使用静态方法时,由于您不在对象上下文中,因此您无法访问$this

您也可以将check_table()设为静态,并将其用作某种工厂:

public static function get($table) {
    if(self::check_table($table)) {
        return "ok";
    }

}
public static function check_table($table) {
    $r = (new Database())->query("SELECT 1 FROM $table");
    return $r;
}

http://php.net/manual/en/language.oop5.static.php

答案 1 :(得分:-1)

您可以尝试输入“self :: MethodeName”而不是“this-&gt; MethodeName”