(php / oop)方法在两个方向都不起作用

时间:2012-10-24 02:00:21

标签: php static-methods method-chaining

我在PHP中有somme问题,我把这段代码放在我的index.php中:

$test = $wke ->sql
             ->insert("test")
             ->values(array("foo" => "bar"))
             ->go();

这段代码运行正常,但是当我在这样的方法(debug.class.php)中使用这段代码时:

$test = sql::insert("test")
             ->values(array("foo" => "bar"))
             ->go();

不起作用:

Fatal error: Call to undefined method template::values() [...]

我的“insert”(和“values”)方法在我的SQL类中,而不是我的模板类。我知道我的第二个例子是在我的模板类中调用的,但最后,我调用了sql :: insert,而不是self :: insert或template :: insert。这就是我迷失的原因。

抱歉我的英文!提前谢谢。

PS:这是我的sql :: insert方法

static $queryBuffer;
public function insert($in) {
   self::$queryBuffer->type = "insert";
   self::$queryBuffer->data->insert = $in;
   return $this;
}

1 个答案:

答案 0 :(得分:-1)

按如下方式更改插入功能。

static $queryBuffer;
public static function insert($in) {
   self::$queryBuffer->type = "insert";
   self::$queryBuffer->data->insert = $in;
   return $this;
}

插入应该是静态的,以便在没有对象的情况下调用类名。