Oppure

Loading
17/02/18 12:06
alex1995
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:

<?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;

?>
aaa
17/02/18 13:09
Poggi Marco
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 ) .
aaa
17/02/18 15:04
TheDarkJuster
Gli errori sono due:
1) getname e setname sono invertiti
2) print $user->getname; deve diventare print $user->getname();
aaa
17/02/18 15:31
alex1995
mi dice Notice: Undefined property: Miaclasse::$setname in C:\xampp\htdocs\index.php on line 22
aaa
17/02/18 15:41
comtel
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.
aaa
17/02/18 16:24
alex1995
<?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;

?>
aaa
17/02/18 16:41
TheDarkJuster
Postato originariamente da alex1995:

<?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()
aaa
17/02/18 17:15
comtel
Postato originariamente da alex1995:

<?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:

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

?>

aaa