[php] parent::child

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Goed, het probleem is niet helemaal duidelijk. Een nieuw verhaal dus waaruit het duidelijker moet gaan worden.

Ik heb een formulier voor een aanmelding, met daarin contactgegevens en factuurgegevens. De velden van de contactgegevens zijn hetzelfde als de factuurgegevens en moeten ook op dezelfde manier gecontroleerd worden.

De code moet hergebruikt/gedeeld worden in andere "programma's", dus ik dacht, dat doen we met objecten. Ik heb een klasse Aanmelding gemaakt en daaronder twee subklassen Persoon en Adres. De functie opslaan() moet de aanmelding, inclusief de gegevens van de subklassen opslaan in de database.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
 class Aanmelding()
  {
    function opslaan()
     {
       // alle gegevens verzamelen en opslaan in de database
     }
   }

 class Persoon extends Aanmelding
   {

    }

 class Adres extends Aanmelding
   {

   }
?>


Gebruik:
PHP:
1
2
3
4
5
6
7
<?php
 $aanmelding = new Aanmelding();
 $contact = new Persoon();
  $contact->set...;
 
 $aanmelding->opslaan();
?>


Het probleem is dus: hoe verkrijg ik in de klasse Aanmelding de gegevens van de Persoon en Adres subklassen?

[ Voor 79% gewijzigd door Verwijderd op 15-04-2004 13:59 . Reden: duidelijkere probleemomschrijving ]


Acties:
  • 0 Henk 'm!

  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 09-09 15:24
Niet echt lekker duidelijk wat je bedoelt Pinguin ;)

Bedoel je iets als dit!?!?!
PHP:
1
2
3
4
$aanm= new Aanmelding;
$aanm->persoon= new Persoon;
$aanm->persoon->setLeeftijd(18);
echo $aanm->persoon->getLeeftijd();

Acties:
  • 0 Henk 'm!

  • PhoeniX-
  • Registratie: Juni 2000
  • Laatst online: 01-09 10:26
Eerst maak je instanties van persoon en adres, daarna van aanmelding, en dan roep je aanmelding->opslaan aan, waar je de persoon en adres instanties aan meegeeft als parameters:
PHP:
1
2
3
4
$contact = new Persoon();
$adres = new Adres();
$aanmelding = new Aanmelding();
$aanmelding->opslaan($contact, $adres);

In je aanmelding class pas je de opslaan functie aan:
PHP:
1
2
3
4
5
6
7
Class Aanmelding() { 
  function opslaan($contact, $adres)
    // nu heb je in $contact je persoon object, en in $adres je adres object
    // om functies in aan te kunnen roepen, bijvoorbeeld:
    // $gegevens = $adres->getGegevens();
  }
}

Hou er wel rekening mee dat je door die 'extend' van adres en persoon class, deze ook de opslaan functie erven! Ik denk dat het extenden eigenlijk niet nodig is .. het zijn geen specialisaties van de superclass (aanmelding) voor zover ik het begrijp.

Hope this helps ;)

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Waarom zijn Persoon en Adres subclasses van Aanmeldig? Iets zegt me dat een cursus OO wel verstandig is :) (En nee, PHP is niet de taal om daarmee te experimenteren)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
.oisyn schreef op 15 april 2004 @ 14:21:
Waarom zijn Persoon en Adres subclasses van Aanmeldig? Iets zegt me dat een cursus OO wel verstandig is :) (En nee, PHP is niet de taal om daarmee te experimenteren)
De reden? Getronics. Het systeem waarin de gegevens opgeslagen moeten worden kennen aparte tabellen voor relaties en adressen. Het is dus helaas niet anders...

Ik heb wel enig verstand van OO modelleren (NIAM, UML e.d.) en heb deze vraag dus ook gesteld. Het probleem is voor mij op deze manier gewoonweg het beste te ondervangen. Zeker omdat er met een aparte functiecalls gewerkt wordt richting het pakket dat ook met mijn gegevens moet werken. Daarom heb ik dus de gegevensstructuur over genomen.

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Nu online

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op 15 april 2004 @ 15:18:
[...]

De reden? Getronics. Het systeem waarin de gegevens opgeslagen moeten worden kennen aparte tabellen voor relaties en adressen. Het is dus helaas niet anders...
Je legt nog steeds niet uit waarom persoon en adres een subklasse moeten zijn van aanmelding.

Dat een aanmeling bestaat uit een persoon en een adres is weer een ander verhaal (compositie, en geen overerving. property, en geen subklasse)
Ik heb wel enig verstand van OO modelleren (NIAM, UML e.d.) en heb deze vraag dus ook gesteld. Het probleem is voor mij op deze manier gewoonweg het beste te ondervangen. Zeker omdat er met een aparte functiecalls gewerkt wordt richting het pakket dat ook met mijn gegevens moet werken. Daarom heb ik dus de gegevensstructuur over genomen.
Ook hierin geef je niet aan waarom persoon en adres een subklasse moeten zijn.

Waarom geef je aanmelding niet gewoon een property adres en een propery persoon?

[ Voor 6% gewijzigd door Creepy op 15-04-2004 15:27 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

*Met Creepy*
Waarom is een Persoon ook een soort Aanmelding? En waarom is een Adres een soort Aanmelding?

[ Voor 5% gewijzigd door .oisyn op 15-04-2004 15:36 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • PhoeniX-
  • Registratie: Juni 2000
  • Laatst online: 01-09 10:26
Bij een superclass als Aanmelding, zou een subclass iets kunnen zijn als:
AanmeldingMailingList
AanmeldingPersoneelsvereniging

De basis is hetzelfde, maar de details niet.

Maar anyway, had je wat aan mijn vorige reply?

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

PhoeniX-: ik zou het anders aanpakken, ervanuitgaande dat een Aanmelding een Persoon en een Adres heeft. Je moet die Persoon en dat Adres in zo'n geval namelijk gewoon meegeven aan de constructor van Aanmelding

PHP:
1
2
3
$p = &new Persoon ("Pietje");
$adr = &new Adress ("Kerkstraat 1");
$a = &new Aanmelding ($p, $adr);

[ Voor 15% gewijzigd door .oisyn op 15-04-2004 15:59 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • PhoeniX-
  • Registratie: Juni 2000
  • Laatst online: 01-09 10:26
.oisyn schreef op 15 april 2004 @ 15:52:
PhoeniX-: ik zou het anders aanpakken, ervanuitgaande dat een Aanmelding een Persoon en een Adres heeft. Je moet die Persoon en dat Adres in zo'n geval namelijk gewoon meegeven aan de constructor van Aanmelding
Daar zat ik inderdaad ook aan te denken :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
.oisyn schreef op 15 april 2004 @ 15:52:
PhoeniX-: ik zou het anders aanpakken, ervanuitgaande dat een Aanmelding een Persoon en een Adres heeft. Je moet die Persoon en dat Adres in zo'n geval namelijk gewoon meegeven aan de constructor van Aanmelding

PHP:
1
2
3
$p = &new Persoon ("Pietje");
$adr = &new Adress ("Kerkstraat 1");
$a = &new Aanmelding ($p, $adr);
Ik heb mijn zonden de afgelopen twee uur tijdens rijles nog eens overdacht, en met een vrijwel gelijke oplossing ben ik de auto uitgestapt... Niemand aangereden trouwens O-). Enfin, ik ga eens wat dingen aanpassen in mijn tekening op het whiteboard.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Een verhaaltje met waarom Persoon en Adres volgens jou een soort Aanmelding zijn komt er dus niet meer uit neem ik aan?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Nu online

Creepy

Tactical Espionage Splatterer

Ik zou ook wel willen weten wat de achterliggende gedachte is geweest voor het subklasse verhaal, zeker aangezien je aangeeft verstand te hebben van UML en OO modelleren.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
.oisyn schreef op 15 april 2004 @ 17:30:
Een verhaaltje met waarom Persoon en Adres volgens jou een soort Aanmelding zijn komt er dus niet meer uit neem ik aan?
Ja hoor, geen enkel probleem. Gewoon een foutieve hantering van de techniek; leek mij inmiddels ook wel duidelijk ;).

Het is ook al een tijdje terug dat ik voor het laatst die technieken heb toegepast (zegmaar: ruim 2 jaar terug, TBK [universiteit twente] is nu niet echt een studie waarin je de technieken dagelijks moet gebruiken)...
Pagina: 1