Неустранимая ошибка: использование $this, если не в объектном контексте

вот часть, имеющая ошибку.

Неустранимая ошибка: использование $this, если не в контекст объекта в /pb _events.php в строке 6

строка 6: $jpp = $this->vars->data["jpp"];

function DoEvents($this) {

    global $_CONF, $_PAGE, $_TSM , $base;

    $jpp = $this->vars->data["jpp"];

    $cache["departments"] = $this->db->QFetchRowArray("SELECT * FROM {$this->tables[job_departments]}");
    $cache["locations"] = $this->db->QFetchRowArray("SELECT * FROM {$this->tables[job_location]}");
    $cache["names"] = $this->db->QFetchRowArray("SELECT * FROM {$this->tables[job_names]}");
    $cache["categories"] = $this->db->QFetchRowArray("SELECT * FROM {$this->tables[job_categories]}");

Спасибо большое! оценить!

Ответ 1

$это имеет смысл только в методах, а не в функциях

это нормально

class Foo {
     function bar() {
          $this->...

это не

function some() {
    $this->

//edit: не заметил, что он передает "$ this" в качестве параметра

совет: просто замените "$ this" на "$ somethingElse"

Ответ 2

Вы не можете передать $this процедурной функции. $this - зарезервированная переменная.

Ответ 3

Согласно моим комментариям. Вы хотите использовать $this как переданную переменную, а php не допускает ее вне тела методов класса.

function DoEvents($obj) {

    global $_CONF, $_PAGE, $_TSM , $base;

    $jpp = $obj->vars->data["jpp"];

    $cache["departments"] = $obj->db->QFetchRowArray("SELECT * FROM {$obj->tables[job_departments]}");
    $cache["locations"] = $obj->db->QFetchRowArray("SELECT * FROM {$obj->tables[job_location]}");
    $cache["names"] = $obj->db->QFetchRowArray("SELECT * FROM {$obj->tables[job_names]}");
    $cache["categories"] = $obj->db->QFetchRowArray("SELECT * FROM {$obj->tables[job_categories]}");

Ответ 4

Сначала вы должны сделать объект.

   $object=new Myobject;
   DoEvents($object);