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.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.