(php/oop) Метод не работает в обе стороны

У меня есть проблема с PHP, я поместил этот код в свой 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() [...]

Мой метод «вставки» (и «значения») находится в моем классе 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;
}

person DrSAS    schedule 24.10.2012    source источник
comment
Поскольку insert в вашем классе SQL не является static, я не думаю, что вы можете использовать sql::insert.   -  person Passerby    schedule 24.10.2012


Ответы (1)


Измените функцию вставки следующим образом.

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

Вставка должна быть статической для вызова с именем класса без объекта.

person User 99x    schedule 24.10.2012
comment
Но если вы используете static, вы не можете использовать return $this. - person Madara's Ghost; 24.10.2012