- Home
- Categorie
- Coding e Sistemistica
- Coding
- fatal error. Ma perchè?
-
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
-
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!
-
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