Используйте функцию и статический метод

В классе таблицы я хочу использовать простые функции, а также статические функции, как я могу это сделать?
Вот мой текущий код (который не работает)

В моем контроллере я просто хочу сделать: 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;
}

}
?>

-1

Решение

Вы должны точно понимать, что static средства. Когда вы объявляете метод как статический, вы, по сути, говорите: «Этот метод может быть вызван напрямую, без фактической реализации его класса». Поэтому, пока вы находитесь в статическом методе, у вас не будет доступа к $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

0

Другие решения

Вы можете попробовать поставить «self :: MethodeName» вместо «this-> MethodeName»

-1

По вопросам рекламы [email protected]