2009-10-29 9 views
7

qui è la parte in caso di errore.

Fatal error: Using $this when not in object context in /pb_events.php on line 6

linea 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]}"); 

Grazie mille! apprezzare!

risposta

13

$ Questo ha senso solo nei metodi, non in funzioni

questo è ok

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

questo non è

function some() { 
    $this-> 

// edit: non si accorse che passa " $ this "come parametro

consiglio: è sufficiente sostituire" $ this "con" $ somethingElse "

+0

grazie per la risposta! questo è un codice software opensource che funzionava bene su PHP4. ora proverò su PHP5 e ho degli errori:/Non sono molto bravo con PHP:/sto cercando di risolvere il problema secondo i tuoi consigli ... –

+0

quindi come posso modificare questo? :/se metto una classe in cima, le altre pagine non funzionano ... gran casino –

+0

wow Eeeek !!! TI [email protected]@@@!!!! SALVAVITA!!!! GRAZIE A LOT UOMO !! :)) woaaaa così felice !! –

6

Non è possibile passare a $this una funzione procedurale. $this è una variabile riservata.

+0

hey, grazie! quindi qual è il tuo consiglio per la soluzione? puoi essere un po 'più chiaro? Non sono molto bravo su php:/ –

+3

basta cambiare il nome della variabile passata. controlla la mia risposta –

+0

Un grande trucchetto! –

0

Devi rendere l'oggetto prima.

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

Secondo i miei commenti. Si desidera utilizzare $this come variabile passata e php non lo consente al di fuori del corpo dei metodi di classe.

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]}"); 
+0

sì! questo è il problema! che stupido im! ordinati prima del tuo commento ... anche tu salva la vita !! molte grazie!!! super ragazzi siete! –

Problemi correlati