15. januar 2009 - 07:41Der er
5 kommentarer og 1 løsning
Flytte data mellem 2 classer
Jeg prøver at flytte et password som bliver oprettet i class account over til class mail. Problemet er bare at jeg ikke kan få dem til at gøre det, uden at man hver gang man laver class mail skal kalde en funktion, det ville være smart, hvis den blev kaldt automatisk når man oprettede class mail. Har lavet et simplificeret eksempel
class account { private $password;
public function __construct() { $this->password = 'hemmelig kode'; }
public function get_password() { global $mail;
$mail->set_password($this->password); } }
class mail { private $password;
public function __construct() { global $account;
$account->set_password(); }
public function set_password($data) { $this->password = $data; } }
Nogen forklaring på, hvad der går galt? Det virker fint uden for classerne at flytte koden over ved at skrive $account->get_password(); Bare ikke når de skal kommunikere med hinanden: mail -> account -> mail.
Jeg har lavet et lynhurtigt eksempel som du kan bruge. Det er ikke specielt brugbart på nogen måde og er skrevet meget hurtigt - men det viser hvordan klassen mail nedarver fra account og skifter password et par gange.
<?php class account { private $password;
public function get_password() { return $this->password; // bør bestemt sikres! }
// nedarvede klasser kan ikke tilgå private variabler, funktioner, etc. // skal de kunne det, så angiv dem som public eller protected. public function set_password($new_pass) { $this->password = $new_pass; } }
class mail extends account { public function __construct() { // hvad du end har brug for... }
public function change_password($string) { parent::set_password($string); } }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.