[PHP] Meerwaarde van Class bij veel data

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • J_Davelaar
  • Registratie: Maart 2001
  • Laatst online: 19-03 13:31
Ik ben aan het kijken of het zin heeft om over te stappen op het werken met een class ipv van functies voor het werken met veel data.

Ik beheer een wedbased beheers site voor diploma's. Als ik nu een overzicht van leden bekijk krijg ik bij elk lid voor elk diploma te zien of hij/zij het gehaald heeft. Dit is iedere keer een optel som van de behaalde punten. En voor het printen van de gegevens haal ik weer die punten apart op uit de database.

Nu wordt iedere keer de info vers opgehaald uit de db. Ik vraag mij af of het handig is om van elk lid dat opgevraagd wordt alles in een class te zetten en dat later te hergebruiken. En dan natuurlijk bij een aanpassing automatisch de data laten verversen per lid. Nu werk ik gewoon met een paar functies die het voor elk lid opniew ophalen.
Zou dit sneller werken en heeft het ook echt zin?
Het zal uiteindelijk gemiddeld om ca. 70 instanties van die class gaan en in een uitzonderlijk geval 150. Is dit eigenlijk wel de manier om te werken met classes?

Was ik maar een punt dan was ik het einde


Acties:
  • 0 Henk 'm!

  • dingstje
  • Registratie: Augustus 2002
  • Laatst online: 02-01-2024
Zou het niet interessanter zijn om je datamodel aan te passen met het resultaat van die optelsom/een flag 'geslaagd' in je database en die op te vragen? En overigens, ik snap niet wat je zou verbeteren door classes te gebruiken. Dan krijg je toch juist hetzelfde resulataat als de gewone functie maar dan met extra parsetime voor het parsen van de classes?

If you can't beat them, try harder


Acties:
  • 0 Henk 'm!

  • J_Davelaar
  • Registratie: Maart 2001
  • Laatst online: 19-03 13:31
Dat vroeg ik mij dus ook af. Maar ik zag in een eerder topic over ASP en PHP dat de classes ook verloren gaan bij het herladen. Het heeft dus idd heel weinig zin.

Was ik maar een punt dan was ik het einde


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Dus als ik het goed begrijp heeft een lid data voor verschillende diploma's en bekijk je of dit boven een bepaald getal is. Als dit zo is, is het lid geslaagd voor dit diploma en anders niet. Ik weet niet hoe je je query in elkaar hebt gezet, maar is dit niet een mogelijkheid om te doen:
code:
1
SELECT (`cijfer` > 5.4) as `geslaagd` FROM `table`

geslaagd heeft dan de waarde 1 als het lid een 5.5 of hoger heeft voor cijfer. Als het lager is dan heeft het de waarde 0.

[ Voor 7% gewijzigd door Michali op 14-01-2004 19:13 ]

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:45
Een class moet je niet zien als een samengepakt geheel van data, maar als een logisch element dat zijn eigen verantwoordelijkheden heeft en kent.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Je zou de opgehaalde informatie kunnen opslaan in een XML bestand welke je dan de volgende keer kunt gebruiken. Heb je verder wel eens aan sessies gedacht? Mischien dat dit al genoeg oplossing bied voor het probleem? (ik weet namelijk niet precies hoe lang je de opgehaalde data wilt bewaren)

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • J_Davelaar
  • Registratie: Maart 2001
  • Laatst online: 19-03 13:31
Ik werk al met sessies dus dat is het probleem niet. Het ging meer om de structurering van de data en de snelheid.
Het gaat niet om enkele cijfers maar om 20 tot 30 punten per diploma die behaald moeten worden. Die worden nu telkens opgeteld. Het lijkt nogal omslachtig maar zo werken die diploma's nu eenmaal. (het gaat om CWO's, voor de mensen die hier bekend mee zijn).

Het is begonnen als een hobby project maar ik wil het nu allemaal opschonen en netjes maken.

Was ik maar een punt dan was ik het einde


Acties:
  • 0 Henk 'm!

  • Tom-Eric
  • Registratie: Oktober 2001
  • Laatst online: 25-03 09:11
Je kan de classes serializeren en in een sessie stoppen, dan kan je ze blijven gebruiken na een nieuwe request (link)

i76 | Webdesignersgids | Online Gitaarlessen & Muziekwinkels


Acties:
  • 0 Henk 'm!

  • Fuzz10
  • Registratie: Oktober 2003
  • Niet online
J_Davelaar schreef op 14 januari 2004 @ 20:04:
Ik werk al met sessies dus dat is het probleem niet. Het ging meer om de structurering van de data en de snelheid.
Ik zou uitkijken bij het gebruik van classes puur als Dataobjects (in de zin van een mapping van classes op je datamodel) : da's in PHP4 behoorlijk traag (overigens in PHP5 opgelost).

Zelf kies ik er altijd wel voor vanwege de overzichtelijke code die het oplevert (je hoeft geen queries meer te draaien enzo) maar probeer wel zoveel mogelijk de data JIT op te halen.

Dus i.p.v.

PHP:
1
2
3
4
5
6
7
8
9
10
11
class blah
     member x
     member y

function blah 
      fillmemberx
      fillmembery


function getmemberx
      return $this->memberx;


doe ik dan (zoveel mogelijk):

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class blah
     memberx
     membery

function blah 



function getmemberx
       if notfilled(memberx) {
             fillmemberx;
      }
      
      return $this->memberx;


Beetje pseudo allemaal , maar goed
....

Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

whoami schreef op 14 januari 2004 @ 19:14:
Een class moet je niet zien als een samengepakt geheel van data, maar als een logisch element dat zijn eigen verantwoordelijkheden heeft en kent.
Een class is inderdaad meer een gegroepeerd geheel van functionaliteit, dan een verzameling data. Een class is dus (in PHP 4) niks meer en minder dan een overzichtelijke vorm waarin je je code giet. :)

Je moet ook geen XML gebruiken. Ten eerste omdat XML bedoeld is voor het aanbieden of ophalen van informatie (data) op een gestructureerde manier, zodat andere programma's,scripts e.d. wat met je data kunnen. Ten tweede, als de data toch al in een database hebt staan, is het imho nutteloos om ze ook nog in XML-bestanden te gaan zetten.

Als het je om performance gaat, zou je kunnen kijken naar caching-mechanismen, die voor dit soort dingen bedoeld zijn. :)

Sundown Circus

Pagina: 1