login  Naam:   Wachtwoord: 
Registreer je!
 Forum

OOP structuur

Offline lasdesigner - 20/03/2008 13:09
Avatar van lasdesignerPHP beginner Hallo,

Ik wil meerdere classes namelijk:
- World.class.php -> de classe waarin alle acties staan
- Communication.class.php -> de classe waarmee berichten verstuurd / ontvangen worden
- ... .class.php

Nu heb ik in de construct van World.class.php een aantal variabelen gedefinieerd. O.A. ID
Dus ik heb dan iets als:
  1. <?php
  2. class World {
  3. public $id;
  4.  
  5. public function __construct($id) {
  6. $this->id = $id
  7. }
  8.  
  9. public function SendMessage($naarId, $bericht) {
  10. $bericht = new Message();
  11. $bericht->Stuur($naarD, $bericht);
  12. ...
  13. }
  14. }
  15. ?>


Dan heb ik dus de classe communication. Daarin heb ik de function SendMessage. Die wordt dus vanaf World aangestuurd.
Nu is mijn vraag 1
Kan ik in een variabele onder mijn class World zetten:
$bericht = new World();
zodat ik deze in meerdere functies aan kan roepen?

Vraag 2: Hoe kan ik nu vanaf de classe Communication, mijn ID ophalen uit de class World, kan dit met extends? Of moet ik de ID helemaal doorgeven?

3 antwoorden

Gesponsorde links
Offline marten - 20/03/2008 13:17
Avatar van marten Beheerder Zoek op google (php.net) eens naar overerving. Er zijn namelijk meerdere methodes om een object over te erven. De makkelijkste is de class extenden.

Offline cloudstrife - 20/03/2008 14:34
Avatar van cloudstrife PHP beginner Ik zou hiervoor gewoon een statitsche functie aanmaken als je toch niet meer doet dan berichten sturen uit andere classes..

Je haalt wel enkele rare toeren uit in die functie sendMessage(), je geeft daar een bericht mee, vervolgens stop je in diezelfde variabele een instantie en ga je dan die variabele nog eens doorsturen naar een functie die van die klasse message komt... klopt toch ergens iets niet hoor.

Misschien best eens de fundamenten van oo ontwerpen/programmeren doornemen...

@marten: meerdere methodes om over te erven? Welke dat dan? Volgens mij kan je enkel overerven via extend...
Offline Stijn - 20/03/2008 15:20
Avatar van Stijn PHP expert Lees eens een aantal artikels over OOP. Denk na over je ontwerp en begin niet zomaar iets te programmeren. Voor er iets ontwikkelt wordt van classes, wordt er veel gedacht. Bijvoorbeeld de methode sendMessage() staat in de verkeerde class. De methode send() zou beter passen in het concept Message.

Beginners gebruiken te vaak extends om methodes van andere classes te gebruiken, terwijl de ene class niets met de andere te maken heeft.

  1. class Kip extends Vogel{}

  1. class Kip extends Paard{}


Als een methode in een class een methode van een andere class nodig heeft kan je die andere class instantie meegeven met de methode. Ingewikkeld? Niet helemaal hoor.

  1. class A {
  2.  
  3. ....
  4.  
  5. public function doe( B $b ) {....} //B $b is typehinting.
  6.  
  7. }
  8.  
  9. class B {}
  10.  
  11. $a = new A();
  12. $b = new B();
  13. $a->doe($b);


Dus als je class Communication een bericht moet versturen van de ene wereld naar de andere kan dat bijvoorbeeld als volgt.

  1. class Communication
  2. {
  3.  
  4. ...
  5.  
  6. public function sendMessage( World $van , World $naar )
  7. {
  8. $this->_send( $van->id , $naar->id );
  9. }
  10.  
  11. }
  12.  
  13. $aarde = new World(1);
  14. $mars = new World(3);
  15. $com = new Communication();
  16. $com->sendMessage($aarde , $mars);


Nog een kleine opmerking! De namen van classes beginnen met een hoofdletter en de namen van methodes beginnen met een kleine letter.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.256s