Visualizzazione dei risultati da 1 a 9 su 9

Discussione: $this non va!

  1. #1

    $this non va!

    ho un problema nella scrittura di una classe

    Codice PHP:
    class test {
        public function 
    page() {

            
    $page "";
            
    $page .= $this->head();
    }

        private function 
    head() {
            
        }

    solo che mi da questo errore
    Fatal error: Using $this when not in object context in some/page.php on line 81

  2. #2
    A me funziona benissimo:

    Codice PHP:
    <?php
    class test {
        public function 
    page() {
            
    $page "";
            
    $page .= $this->head();
        }

        private function 
    head() {
            echo(
    __CLASS__ '->' __FUNCTION__);
            return 
    'head()';
        }
    }

    $obj = new test();
    $obj->page();

    ?>

  3. #3
    quando uso $this all'interno della classe, per richiamare magari una funzione della stessa classe, o una variabile, sempre della stessa classe, mi fa quell'errore, per le chiamate dall'esterno va sempre bene

  4. #4
    Nel codice che ho postato $this viene utilizzato "all'interno della classe, per richiamare magari una funzione della stessa classe".

    Prova a postare il codice completo oppure un codice di esempio simile a quello indicato ma che solleva l'errore che ottieni.

  5. #5
    Codice PHP:
    class InitApplication {

        private function head() {
        }

        public function XHTML() {


            $config        = new MPConfig;

            $encoding    = $MPConfig->encoding;
            $xml        = $MPConfig->usexml;
            if ($xml) {
                $xml = "<?xml version=\"1.0\" encoding=\"$encoding\"?>\n";
            } else {
                
    $xml "";
            }

            
    $doctype    "<!DOCTYPE html PUBLIC ";
            
    $doctype    .= "\"-//W3C//DTD XHTML 1.0 Transitional//EN\"";
            
    $doctype    .= "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";

            
    $xhtml        $xml $doctype;
            return 
    $xhtml;
        }

        public function 
    page() {

            
    $page $this->head(); // qui da l'errore
        
    }

    }

  6. #6
    Nel codice che hai postato NON richiami il metodo page() da nessuna parte....

  7. #7
    Prova modificando questa riga
    Codice PHP:
    $xml = "<?xml version=\"1.0\" encoding=\"$encoding\"?>\n";
    in
    Codice PHP:
    $xml "<" "?xml version=\"1.0\" encoding=\"$encoding\"?" ">\n"
    PS. Occhio ai backslash che il forum elimina

  8. #8
    appurato che cmq io il metodo page lo richiamo (scusami ma pensavo fosse scontato) e che non richiamo il metodo XHTML e che tutte le funzioni sotto il metodo page vanno all'infuori di $this...

  9. #9
    Posta l'estratto del codice dove richiami il metodo page() e prova a postare una classe ridotta all'osso che ci permetta di replicare l'errore che ottieni.

    Edit: questo codice a me funziona perfettamente:

    Codice PHP:
    <?php
    class InitApplication {

        private function 
    head() {
            echo(
    __CLASS__ '->' __FUNCTION__);
        }

        public function 
    XHTML() {


            
    $config        = new MPConfig;

            
    $encoding    $MPConfig->encoding;
            
    $xml        $MPConfig->usexml;
            if (
    $xml) {
                
    $xml '<?xml version="1.0" encoding="' $encoding '"?>' "\r\n";
            } else {
                
    $xml "";
            }

            
    $doctype    "<!DOCTYPE html PUBLIC ";
            
    $doctype    .= '"-//W3C//DTD XHTML 1.0 Transitional//EN"';
            
    $doctype    .= '"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' "\n";

            
    $xhtml        $xml $doctype;
            return 
    $xhtml;
        }

        public function 
    page() {
            echo(
    __CLASS__ '->' __FUNCTION__);
            
    $page $this->head(); // qui da l'errore
        
    }

    }

    $obj = new InitApplication();
    $obj->page();

    ?>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.