В классе таблицы я хочу использовать простые функции, а также статические функции, как я могу это сделать?
Вот мой текущий код (который не работает)
В моем контроллере я просто хочу сделать: 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;
}
}
?>
Вы должны точно понимать, что 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;
}
Вы можете попробовать поставить «self :: MethodeName» вместо «this-> MethodeName»