• User Newbie

    fatal error. Ma perchè?

    Salve a tutti, volevo presentarvi il mio dilemma.
    Sto cercando di costruire una semplicissima classe che abbia dei metodi che mi consentano di aprire un file e scrivere i dati provenienti da un form su di esso, prima di aver svolto qualche operazione, ma non essendo io pratico di oop e avendo sempre lavorato in modo "procedurale" ho combinato un pasticcio che non mi spiego (infatti non mi entra prorpio in testa la oop).
    il mio script lo avevostrutturato così
    [PHP]
    <?php
    class Scrivifile {
    public $file="iscritti.txt";
    public $nome;
    public $cognome;
    public $mail;

    public function __construct() {

    $this->nome=$_POST['nome'];
    $this->cognome=$_POST['cognome'];
    $this->mail=$_POST['mail'];
    

    }
    public function Controllofile ($this->file) {
    if (file_exists($this->file) && is_readable($this->file))
    return TRUE;
    else return FALSE;
    }
    public function Controllodati ($this->nome, $this->cognome,$this->mail) {
    // verifico la validità dei dati ecc...
    }
    }
    ?>

    [/PHP]
    l' errore che restituisce è il seguente
    fatal error cannot reassign $this in pagina1.php on line 14
    Potete dirmi gentilmente dove sbaglio e perchè è sbagliato?
    Strutturare il costruttore come ho fatto io è giusto o è sconveniente e concettualmente errato?
    Eventualmente come potrei riscrivere questo script'
    Ho bisogno di qualche dritta...

    Grazie a tutti
    Arrivederci


  • User Attivo

    Ciao jappoz, prova a rimuovere il $this->file dall'argomento della funzione "Controllofile" e anche "Controllodati" non è necessario.
    Nella dichiarazione di una funzione non devi mettere $this, ma solo il nome della variabile.

    Es.

    
    class test
    {
        private $testo;
    
        public function __construct()
        {  
            $this->testo = "prova";
        }
    
        public function getTesto()
        {
            stampa_testo($this->testo);
        }
    
        private function stampa_testo($test)
        {
            echo $test;
        }
    }
    
    

    Ciao!


  • User Newbie

    grazie della risposta, come detto rima non sono una cima di oop 🙂
    per quanto riguarda il costruttore e la classe in sè, secondo voi è strutturata bene o no, come potrei migliorarla concettualmente?

    grazie mille delle risposte, ciao