Visualizzazione risultati 1 fino 4 di 4

Discussione: Trasformare classe da php 4 a php5

  1. #1
    Guest

    Question Trasformare classe da php 4 a php5

    Ciao a tutti, io ho questa classe:

    Codice PHP:
    <?php

    class generic {
    function
    redirect ($url, $tempo) {
    //Non ha ancora inviato gli header
    if(!header_sent() && !$tempo)
    {
    //Se il tempo è scaduto esegui il redirect, altrimenti fai un refresh
    if($tempo) header ('Refresh: '. $ tempo . ';' . $url);
    else
    header ('Location: ' . $url);
    } else {
    //La prima volta entra qui perchè gli header non sono ancora stati inviati
    //Invia qui gli header
    echo "<meta http-equiv=\"refresh\" content=\"" . $tempo . ";" . $url . "\">";
    }
    }
    }
    ?>
    Ora, ogni volta che la richiamo mi da questo errore:
    error non-static method should not be called statically
    E leggendo in internet ho letto che la mia classe è stata costruita per php 4, come faccio a portarla a PHP5??

    Grazie mille
    Ultima modifica di dreadnaut : 22-10-2012 alle ore 19.39.46 Motivo: + tag [php], indentazione

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Il problema non è nella classe, che è valido php5, ma è il modo in cui ne chiami i metodi (come sta cercando di spiegarti il messaggio di errore).

    Il metodo redirect() non è statico, e va quindi chiamato dopo aver creato un oggetto di classe generic, ma tu l'hai chiamato come se fosse statico, usando generic::redirect().

    Per renderlo statico devi precederne la dichiarazione con la parola chiave static. Esempi in gran quantità nella documentazione.

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    Il problema non è nella classe, che è valido php5, ma è il modo in cui ne chiami i metodi (come sta cercando di spiegarti il messaggio di errore).

    Il metodo redirect() non è statico, e va quindi chiamato dopo aver creato un oggetto di classe generic, ma tu l'hai chiamato come se fosse statico, usando generic::redirect().

    Per renderlo statico devi precederne la dichiarazione con la parola chiave static. Esempi in gran quantità nella documentazione.
    Non riesco a capire come modificare la mia classe o richiamare il metodo..io lo richiamo così nelle pagine:

    Codice:
    include "../class/generic.class.php";
    
    // e poi csi richaimo il metodo
    generic::redirect("../index.php",2);
    Devo modificare la classe o come richiamo il metodo?! MI puoi modificare il codice per favore?! Grazie mille =)

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Come ho scritto, gli esempi sono nella documentazione che ti ho linkato sopra. Un esempio è per un attributo statico, l'altro per un metodo statico. Indovina quale dev guardare

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •