Am codul de mai jos pentru care vreau sa trimit "mesaj" de la un obiect catre alt obiect care sa execute o functie.
1. Daca modific numele variabilei $_mesajWelcome in cele doua locuri din constructor am vazut ca functioneaza corect si as vrea sa stiu daca pentru interpretorul php conteaza ca obiectul care i-l dau, este de tipul
si nu conteaza cum se numeste de fapt variabila.TrimitereMesajWelcome
2. am vazut un exemplu in care pe langa propriul obiect dat functiei de mai jos,
Cod: Selectaţi tot
public function notifica()
{
$this->mesajWelcome->trimite($this);
}
mai pasa si un array gol
Cod: Selectaţi tot
public function notifica()
{
$this->mesajWelcome->trimite([], $this);
}
iar pe langa parametrul functiei care primeste obiectul (function trimite($_student)) mai punea inca o variabila $var (function trimite($_student, $var) )care aceasta din urma apela functia public function trimitereReusita() din prima clasa.
$var->trimitereReusita(); in loc de $_student->trimitereReusita.
Va rog sa ma lamuriti cu situatia asta.
spor!
Cod: Selectaţi tot
class Student {
public $nume;
public $varsta;
public $email;
protected $mesajWelcome = "null";
function __construct(TrimitereMesajWelcome $_mesajWelcome)
{
$this->mesajWelcome = $_mesajWelcome;
}
public function seteazaDate($_nume, $_varsta, $_email)
{
$this->nume = $_nume;
$this->varsta = $_varsta;
$this->email = $_email;
}
public function afiseazaDate()
{
echo "Numele : " . $this->nume . "<br>";
echo "Varsta : " . $this->varsta . "<br>";
echo "Email: " . $this->email . "<br>";
}
public function notifica()
{
$this->mesajWelcome->trimite($this); // !!! $this->mesajWelcome->trimite([], $this);
}
public function notificareReusita()
{
echo "Utilizatorul s-a notifica si prin functia asta am salvat in baza de date";
}
}
class TrimitereMesajWelcome {
protected $nume = "null";
public $mesaj = "null";
function trimite($_student) // !!! function trimite($_student, $var)
{
$this->nume = $_student->nume;
$this->mesaj = "Multumim pentru inscriere, " . $this->nume ." Contul tau a fost setat. In curand vei primi un email de notificare.";
echo "S-a notificat utilizatorul cu mesajul: " . $this->mesaj . "<br><br><br>";
var_dump($_student);
$_student->notificareReusita(); // !!! $var->notificareReusita();
}
}
$_mesajWelcome = new TrimitereMesajWelcome;
$_student = new Student($_mesajWelcome);
$_student->seteazaDate('Stefan', '34', 'adresa@email.ro');
$_student->afiseazaDate();
$_student->notifica();