Eerst even wat uitleg:
Ik heb een aantal tabellen in de database staan: item, nieuws, artikel.
Item bevat de data die voor alle informatie nodig is zoals poster, datum publicatie etc. Er staat ook een type en een verwijzings id in. Afhankelijk van het type zoek ik in de juiste tabel (nieuws of artikel) het verwijzings id op. Een artikel table bevat bijvoorbeeld extra informatie over het artikel zoals aantal pagina's etc. Ik heb hiervoor gekozen omdat ik dan niet steeds dezelfde informatie in tabellen aan het zetten ben.
In PHP heb ik een hoofdklasse "item". En 2 afgeleide klassen "nieuws" en "artikel".
Nu loop ik tegen het volgende probleem op: In eerste instantie weet ik nog niet of een item id een artikel of nieuwsitem is. Ik gebruik dus de klasse "item". Pas nadat ik gekeken heb welk type het is wil ik eigenlijk een soort van "type-cast" doen naar de goede klasse (nieuws of artikel). Dit werkt niet (en is ook nog eens niet zo'n goede programmeermethode....)
Als oplossing had ik het volgende in gedachte:
1. Naast klasse item een nieuwe klasse nieuws en artikel maken die niet gebouwd zijn op de klasse item. Bij het aanroepen van de constructor van klasse nieuws of artikel kan ik een pointer doorgeven van de item klasse en zo ook bij de basis elementen komen.
2. Wel een nieuws en artikel klasse maken gebaseerd op klasse item en gewoon als het type vastgesteld is een "new" aanroepen van de juiste klasse, dus eigenlijk de basis gegevens 2x uit de database halen.
Ik heb nu oplossing 2 gemaakt en dat werkt wel, maar dus wel met een overhead. Oplossing 1 lijkt me mooier en tevens sneller. Misschien heeft iemand hier nog een ander idee?
Ik heb een aantal tabellen in de database staan: item, nieuws, artikel.
Item bevat de data die voor alle informatie nodig is zoals poster, datum publicatie etc. Er staat ook een type en een verwijzings id in. Afhankelijk van het type zoek ik in de juiste tabel (nieuws of artikel) het verwijzings id op. Een artikel table bevat bijvoorbeeld extra informatie over het artikel zoals aantal pagina's etc. Ik heb hiervoor gekozen omdat ik dan niet steeds dezelfde informatie in tabellen aan het zetten ben.
In PHP heb ik een hoofdklasse "item". En 2 afgeleide klassen "nieuws" en "artikel".
Nu loop ik tegen het volgende probleem op: In eerste instantie weet ik nog niet of een item id een artikel of nieuwsitem is. Ik gebruik dus de klasse "item". Pas nadat ik gekeken heb welk type het is wil ik eigenlijk een soort van "type-cast" doen naar de goede klasse (nieuws of artikel). Dit werkt niet (en is ook nog eens niet zo'n goede programmeermethode....)
Als oplossing had ik het volgende in gedachte:
1. Naast klasse item een nieuwe klasse nieuws en artikel maken die niet gebouwd zijn op de klasse item. Bij het aanroepen van de constructor van klasse nieuws of artikel kan ik een pointer doorgeven van de item klasse en zo ook bij de basis elementen komen.
2. Wel een nieuws en artikel klasse maken gebaseerd op klasse item en gewoon als het type vastgesteld is een "new" aanroepen van de juiste klasse, dus eigenlijk de basis gegevens 2x uit de database halen.
Ik heb nu oplossing 2 gemaakt en dat werkt wel, maar dus wel met een overhead. Oplossing 1 lijkt me mooier en tevens sneller. Misschien heeft iemand hier nog een ander idee?