Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
PHP - errore classe imparando l' oop
Forum - PHP - errore classe imparando l' oop

Pagine: [ 1 2 3 4 ] Precedente | Prossimo
Avatar
alex1995 (Normal User)
Expert


Messaggi: 294
Iscritto: 27/01/2011

Segnala al moderatore
Postato alle 13:06
Sabato, 17/02/2018
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

  1. <?php
  2.  
  3. class Miaclasse
  4. {
  5.         protected $name = '';
  6.  
  7.         public function setname()
  8.         {
  9.                 return $this->name;
  10.         }
  11.  
  12.         public function getname($name)
  13.         {
  14.                 $this->name = $name;
  15.         }
  16. }
  17.  
  18. $user = new Miaclasse();
  19.  
  20. $user->setname('alex');
  21.  
  22. print $user->getname;
  23.  
  24. ?>


PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 14:09
Sabato, 17/02/2018
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 ) .

PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1620
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 16:04
Sabato, 17/02/2018
Gli errori sono due:
1) getname e setname sono invertiti
2) print $user->getname; deve diventare print $user->getname();

PM Quote
Avatar
alex1995 (Normal User)
Expert


Messaggi: 294
Iscritto: 27/01/2011

Segnala al moderatore
Postato alle 16:31
Sabato, 17/02/2018
mi dice Notice: Undefined property: Miaclasse::$setname in C:\xampp\htdocs\index.php on line 22

PM Quote
Avatar
comtel (Member)
Pro


Messaggi: 145
Iscritto: 08/04/2011

Segnala al moderatore
Postato alle 16:41
Sabato, 17/02/2018
Testo quotato

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.

PM Quote
Avatar
alex1995 (Normal User)
Expert


Messaggi: 294
Iscritto: 27/01/2011

Segnala al moderatore
Postato alle 17:24
Sabato, 17/02/2018
Codice sorgente - presumibilmente Php

  1. <?php
  2.  
  3. class Miaclasse
  4. {
  5.         protected $name = '';
  6.  
  7.         public function setname()
  8.         {
  9.                 return $this->name;
  10.         }
  11.  
  12.         public function getname($name)
  13.         {
  14.                 $this->name = $name;
  15.         }
  16. }
  17.  
  18. $user = new Miaclasse();
  19.  
  20. $user->getname('alex');
  21.  
  22. print $user->setname;
  23.  
  24. ?>


PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1620
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 17:41
Sabato, 17/02/2018
Testo quotato

Postato originariamente da alex1995:

Codice sorgente - presumibilmente Php

  1. <?php
  2.  
  3. class Miaclasse
  4. {
  5.         protected $name = '';
  6.  
  7.         public function setname()
  8.         {
  9.                 return $this->name;
  10.         }
  11.  
  12.         public function getname($name)
  13.         {
  14.                 $this->name = $name;
  15.         }
  16. }
  17.  
  18. $user = new Miaclasse();
  19.  
  20. $user->getname('alex');
  21.  
  22. print $user->setname;
  23.  
  24. ?>




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()

PM Quote
Avatar
comtel (Member)
Pro


Messaggi: 145
Iscritto: 08/04/2011

Segnala al moderatore
Postato alle 18:15
Sabato, 17/02/2018
Testo quotato

Postato originariamente da alex1995:

Codice sorgente - presumibilmente Php

  1. <?php
  2.  
  3. class Miaclasse
  4. {
  5.         protected $name = '';
  6.  
  7.         public function setname()
  8.         {
  9.                 return $this->name;
  10.         }
  11.  
  12.         public function getname($name)
  13.         {
  14.                 $this->name = $name;
  15.         }
  16. }
  17.  
  18. $user = new Miaclasse();
  19.  
  20. $user->getname('alex');
  21.  
  22. print $user->setname;
  23.  
  24. ?>




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

  1. <?php
  2.     class Miaclasse
  3. {
  4.         private $name = '';
  5.  
  6.         public function setname($name)
  7.         {
  8.                 $this->name = $name;
  9.         }
  10.  
  11.         public function getname()
  12.         {
  13.                 return $this->name;
  14.         }
  15. }
  16.  
  17. $user = new Miaclasse();
  18.  
  19. $user->getname('alex');
  20.  
  21. $user->setname("TEST");
  22. print $user->getname();
  23.  
  24. ?>


PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 18:45
Sabato, 17/02/2018
Testo quotato

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à.
PM Quote
Pagine: [ 1 2 3 4 ] Precedente | Prossimo