alex1995 (Normal User)
Expert
Messaggi: 294
Iscritto: 27/01/2011
|
salve, sto studiando l' oop in php ho comprato un libro e ho questo sorgente datomi come esempio ma mi da quest errore:
Notice: Undefined property: Miaclasse::$getname in C:\xampp\htdocs\index.php on line 22
il sorgente è questo:
Codice sorgente - presumibilmente Php |
<?php class Miaclasse { protected $name = ''; public function setname() { return $this->name; } public function getname($name) { $this->name = $name; } } $user = new Miaclasse(); $user->setname('alex'); print $user->getname; ?>
|
|
|
Poggi Marco (Member)
Guru
Messaggi: 969
Iscritto: 05/01/2010
|
Ciao !
Ho letto il codice, e per correggere il programma, basta invertire i nomi delle funzioni getname e setname
( getname va rinominata in setname e setname in getname ) .
|
|
TheDarkJuster (Member)
Guru^2
Messaggi: 1620
Iscritto: 27/09/2013
|
Gli errori sono due:
1) getname e setname sono invertiti
2) print $user->getname; deve diventare print $user->getname();
|
|
alex1995 (Normal User)
Expert
Messaggi: 294
Iscritto: 27/01/2011
|
mi dice Notice: Undefined property: Miaclasse::$setname in C:\xampp\htdocs\index.php on line 22
|
|
comtel (Member)
Pro
Messaggi: 145
Iscritto: 08/04/2011
|
Postato originariamente da alex1995:
mi dice Notice: Undefined property: Miaclasse::$setname in C:\xampp\htdocs\index.php on line 22 |
Posta il codice modificato che hai scritto seguendo i suggerimenti dei colleghi. |
|
alex1995 (Normal User)
Expert
Messaggi: 294
Iscritto: 27/01/2011
|
Codice sorgente - presumibilmente Php |
<?php class Miaclasse { protected $name = ''; public function setname() { return $this->name; } public function getname($name) { $this->name = $name; } } $user = new Miaclasse(); $user->getname('alex'); print $user->setname; ?>
|
|
|
TheDarkJuster (Member)
Guru^2
Messaggi: 1620
Iscritto: 27/09/2013
|
Postato originariamente da alex1995:
Codice sorgente - presumibilmente Php |
<?php class Miaclasse { protected $name = ''; public function setname() { return $this->name; } public function getname($name) { $this->name = $name; } } $user = new Miaclasse(); $user->getname('alex'); print $user->setname; ?>
|
|
Sbagliato ancora. Hai letto la mia risposta?
setname e getname non sono proprietà, sono delle FUNZIONI e le funzioni non si accedono print $user->getname si CHIAMANO print $user->getname() |
|
comtel (Member)
Pro
Messaggi: 145
Iscritto: 08/04/2011
|
Postato originariamente da alex1995:
Codice sorgente - presumibilmente Php |
<?php class Miaclasse { protected $name = ''; public function setname() { return $this->name; } public function getname($name) { $this->name = $name; } } $user = new Miaclasse(); $user->getname('alex'); print $user->setname; ?>
|
|
Stai sbagliando alcune cose: Prima di tutto devi invertire il nome delle funzioni, SET imposta un valore agli attributi della classe e GET recupera quei valori. Queste funzioni (meglio dire metodi) sono detti murator, quindi ti conviene approfondire prima le basi della programmazione orientata agli oggetti e poi procedere con il codice: Pensa prima di scrivere. Inoltre tu stai accedendo ad un metodo, per cui si mettono le parentesi, ed inoltre ancora l'attributo per l'incapsulamento dovrebbe essere privato.
Questo è il codice scritto per bene:
Codice sorgente - presumibilmente Php |
<?php class Miaclasse { private $name = ''; public function setname($name) { $this->name = $name; } public function getname() { return $this->name; } } $user = new Miaclasse(); $user->getname('alex'); $user->setname("TEST"); print $user->getname(); ?>
|
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Questo è il codice scritto per bene: |
Meno male che è scritto bene ...
Sicuro sicuro?
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|