19. maj 2003 - 13:26Der er
1 kommentar og 1 løsning
Kalde en funktion på en instans af et objekt i et andet objekt.
class one { var array1; function one() { $this->array1 = array(); } function add_to_array($item) { array_push($this->array1, $item); } }
class two { function two {} function stuff($instans_one) { $instans_one->add_to_array("slam"); } }
$instans_one = new one(); $instans_two = new two(); $instans_two->stuff($instans_one);
Hvorfor kan man ikke gøre ovenstående? PHP melder ingen fejl, men hvis man skriver indholdet af array1 ud efter ->stuff() kaldet ligger der ikke noget i arrayet.
PHP overfører som default værdier (pass by value) ved funktionskald, og det objekt du kalder 'add_to_array' på er ikke det samme som du har overført, men en kopi.
Du skal bruge 'pass by reference' ved at tilføje et '&' foran variablen i funktionsdeklarationen:
Det kan jeg li'! Ikke at jeg havde glemt det med pass-by-value vs. pass-by-reference. Men et kort og godt svar der dutter.
Takker!!!
Synes godt om
Ny brugerNybegynder
Din løsning...
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.