使用函数和静态方法
Use function and static method
在一个table class中我想用简单的函数也想用静态函数,怎么办?
这是我当前的代码(不起作用)
在我的控制器中,我只想做: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;
}
}
?>
你可以尝试用"self::MethodeName"代替"this->MethodeName"
你必须准确理解static
的意思。当您将方法声明为静态时,您实际上是在说 "This method can be called directly without actually instantiating it's class"。因此,当您使用静态方法时,您将无法访问 $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;
}
在一个table class中我想用简单的函数也想用静态函数,怎么办? 这是我当前的代码(不起作用)
在我的控制器中,我只想做: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;
}
}
?>
你可以尝试用"self::MethodeName"代替"this->MethodeName"
你必须准确理解static
的意思。当您将方法声明为静态时,您实际上是在说 "This method can be called directly without actually instantiating it's class"。因此,当您使用静态方法时,您将无法访问 $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;
}