[PHP5] Array van objecten

Pagina: 1
Acties:

  • fuge
  • Registratie: November 2004
  • Laatst online: 11-06-2024
Ik heb een functie die een array van objecten returned.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class db
{
...
public function getUsers()
{
...
while($row = mysqli_fetch_array($this->__get(sqlresult)))
{
    $tempuser = &new user();
    $tempuser->setUser($row['id'], $row['username'], $row['prename'], $row['name']);
    array_push($this->__get(userarray), $tempuser);
}
return $this->get(userarray);
}
}


Nu ben ik op zoek naar een goeie manier om de object trg uit te lezen
bv
code:
1
2
3
data = &new db();
// werkt natuurlik niet, is om duidelijk te maken wat ik wil
echo data->getUsers[0].__toString();

*** Human knowledge belongs to the world ***


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 00:22

Janoz

Moderator Devschuur®

!litemod

Ik vind persoonlijk de manier waarop je je gebruikers in je object onthoud erg vreemd. Waarom gebruik je een property van je object om je gebruikers in op te slaan terwijl je dit alleen binnen je getUsers functie gebruikt? Als iemand nu voor de tweede keer de getUsers functie aanroept krijg je een lijst terug waar alle gebruikers 2x in staan. Hetzelfde geld voor je resultset. Dit zijn variabelen die je gewoon binnen de scope van je functie zelf wilt houden.

En je tweede stukje. Als je iets doet als:
PHP:
1
2
3
4
$users = $data.getUsers();
foreach ($user in $users){
  //blaat
}


@hieronder: Laatste keer coden in php is alweer een tijdje terug. Ik had eerst zelfs de varnamen nog meet $ ;)

[ Voor 21% gewijzigd door Janoz op 26-05-2006 12:14 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 02-01 15:55
Janoz schreef op vrijdag 26 mei 2006 @ 12:03:
Ik vind persoonlijk de manier waarop je je gebruikers in je object onthoud erg vreemd. Waarom gebruik je een property van je object om je gebruikers in op te slaan terwijl je dit alleen binnen je getUsers functie gebruikt? Als iemand nu voor de tweede keer de getUsers functie aanroept krijg je een lijst terug waar alle gebruikers 2x in staan. Hetzelfde geld voor je resultset. Dit zijn variabelen die je gewoon binnen de scope van je functie zelf wilt houden.

En je tweede stukje. Als je iets doet als:
PHP:
1
2
3
4
$users = $data.getUsers();
foreach ($user in $users){
  //blaat
}
Ik ben het wel met Janoz eens, maar die code is geen geldige php code, dus hieronder de goede code:
PHP:
1
2
3
4
$users = $data->getUsers();
foreach ($users as $user){
  //blaat
}

If I can't fix it, it ain't broken.


  • fuge
  • Registratie: November 2004
  • Laatst online: 11-06-2024
Mijn idee was dat ik dan de array kan uitlezen de 2de keer zonder dat er opnieuw naar de database hoeft gegaan te worden.

*** Human knowledge belongs to the world ***


  • fuge
  • Registratie: November 2004
  • Laatst online: 11-06-2024
Ik krijg nu
code:
1
Warning: Invalid argument supplied for foreach() in /var/www/htdocs/fuge/personal/index.php on line 12

code:
1
2
3
4
5
6
7
    $data = new db();
    $users = $data->getUsers();
    
    foreach ($users as $user)
    {
        echo $user->__toString() . "<br />";
    }

[ Voor 8% gewijzigd door fuge op 26-05-2006 12:29 ]

*** Human knowledge belongs to the world ***


  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 02-01 15:55
Dan is de $users variabele waarschijnlijk geen array... Je kan zelf ook wel het een en ander uitzoeken, kijk bijvoorbeeld eens of het wel degelijk een array is wat je terugkrijgt van $data->getUsers(); .

If I can't fix it, it ain't broken.


  • blizt
  • Registratie: Januari 2003
  • Laatst online: 29-09-2025

blizt

Wannabe-geek

Doe eens een var_dump() van $users en kijk wat er in zit :)

United we stand, and divided we fall


  • fuge
  • Registratie: November 2004
  • Laatst online: 11-06-2024
Nevermind, tzat hem in het feit dat'k moeilijk wou doen met men userarray in db klasse.

Dank voor alle hulp ;)

*** Human knowledge belongs to the world ***

Pagina: 1