[PHP] Klasse in een Array door lopen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • OJkaas®
  • Registratie: Mei 2007
  • Laatst online: 16-02-2024
Ik ben nog niet helemaal thuis in het gebruik van klasse en loop nu vast als ik een array met objecten wil aansturen, het volgende:

- Ik heb een aantal $player objecten hierin kan een waarde worden geset met setSomeValue()
- Ik heb een klasse monkeh die speler toevoegd in de $players array
- Deze $players probeer ik dan met foreach langs te lopen en dan een unieke waarde te geven.
- Maar als ik dan de player objecten print met print_r($players) hebben alle players de max $value in de setSomeValue functie weggeschreven.

- Kan ik niet op deze manier door objecten lussen?
- Of doe ik gewoon wat helemaal verkeerd?

(btw: dit is een stukje voorbeeld wat ik voor de duidelijkheid heb gemaakt, dus kan zijn dat er misschien een tikfoutje instaan.)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
class monkeh {
 private $players = array();

 function addPlayer($player) {
    $this->players[] = $player;
 }

 function startGame() {
   $value = 0;
   foreach ($this->players as $player) {
      $player->setSomeValue($value);
      $value++;
   }
 }
}

class player {
   var $uniqueValue;
   
  function setSomeValue($value) {
       $this->uniqueValue = $value;
  }

  function getUniqueValue() {
       return $this->uniqueValue;
  }
}

$player0 = new player();
$player1 = new player();
$player2 = new player();

$monkey = new monkeh();
$monkey->addPlayer($player0);
$monkey->addPlayer($player1);
$monkey->addPlayer($player2);
$monkey->startGame();

echo $player0->getUniqueValue();
?>


Alvast bedankt!
OJ

[ Voor 11% gewijzigd door OJkaas® op 29-05-2007 17:18 ]


Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 22:02
$person->setSomeValue($value) is een typefout? Of moet dit $player->setSomeValue( $value ) zijn?

Acties:
  • 0 Henk 'm!

Verwijderd

Ik vermoed dat hij echt een functie aanroept van een in $person geinitieerd object, alleen ik zie nergens $person = new person oid.

Misschien kan TS beter toelichten wat zijn intenties zijn.

Acties:
  • 0 Henk 'm!

  • OJkaas®
  • Registratie: Mei 2007
  • Laatst online: 16-02-2024
Ik heb hem even aangepast, $person was inderdaad fout. En heb even de player class erbij gezet. ik wil dus de unieke waarde hebben van de players die met startGame zijn geset, als ik ze nu uitlees met getUniqueValue geven alle players dezelfde waarde.

Acties:
  • 0 Henk 'm!

  • OJkaas®
  • Registratie: Mei 2007
  • Laatst online: 16-02-2024
Oke, voortaan eerst nadenken dan pas vragen, had in me eigen stukje de foreach lus overschreven waardoor er tig keer dezelfde persoon in stond. niet handig, want dit stukje code lijkt perfect te werken :)

Sorry voor de tijd,

hij mag dicht!