[PHP]Verschillende constructors met OOP

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig aan een programma om fitness trainingen bij te houden. Dit allemaal doormiddel van browser, mysql databank en een XML file.

Nu probeer ik dit OO te programmeren maar stuit op het probleem dat ik maar 1 constructor kan aanmaken, heeft iemand hier een oplossing voor. Dit is nou juist waarom ik OO wou programmeren anders ben ik beter dat ik terug gewoon ga programmeren in verschillende pagina's.

iemand met wat goede raad wat ik zou doen? Blijven OO programmeren of toch terug naar het ouwe getrouwe programmeren gaan?

alvast bedankt

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Je geeft wel heel weinig informatie over de aard van je probleem. Leg eens duidelijk uit wat voor problemen je hebt met 1 constructor, anders is het onmogelijk om je advies te geven.

Alvast dit: ga eens kijken naar optionele parameters, daar kun je al een hoop mee. Verder kun je ook veel met een Factory doen (zoek maar op op Google).

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het probleem is dat ik meerdere constructors nodig heb.
vb. In mijn User klasse kan ik op verschillende manieren een User nodig hebben.
1. Bij het inlogen heb ik constructor met username en paswoord.
2. Bij het weergeven van alle Users worden alle users aangemaakt met al hun gegevens (naam, voornaam, geb_dat, enz);
3 Bij zoeken van een bepaalde gebruiker krijgt hij naam en voornaam mee en deze zal dan die User aanmaken.

nu wil ik niet telkens werken met mijn variabele standaardwaarden te geven . Ik probeer zoveel mogelijk altijd dezelfde reeks van informatie uit te breiden. Dit gaat hier niet aangezien 1 veel meer verschilt van 2 en 3 omdat bij 2 en 3 mijn user en paswoord achteraan in de rij staan.

ik hoop dat deze uitleg meer weergeeft. Ik weet het is een dom probleem ben net begonnen met OOP in PHP ik ben nog zo wat de goede methodes aan het zoeken

En wat zou die factory daar kunnen aan oplossen?

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Wat denk je hier van:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php

class Voorbeeld
{
    private $a;
    private $b;
    private $c;
    
    public function __construct($a = null, $b = null, $c = null)
    {
        $this->a = $a;
        $this->b = $b;
        $this->c = $c;
    }
    
    public function getA()
    {
        return $this->a;
    }
    
    public function setA($a)
    {
        $this->a = $a;
    }
    
    public function getB()
    {
        return $this->b;
    }
    
    public function setB($b)
    {
        $this->b = $b;
    }
    
    public function getC()
    {
        return $this->c;
    }
    
    public function setC($c)
    {
        $this->c = $c;
    }
    
    public static function createWithA($a)
    {
        return new Voorbeeld($a);
    }
    
    public static function createWithBandC($b, $c)
    {
        return new Voorbeeld(null, $b, $c);
    }
    
    public static function createWithAandC($a, $c)
    {
        $vb = new Voorbeeld();
        $vb->setA($a);
        $vb->setC($c);
        return $vb;
    }
}

$voorbeeld = Voorbeeld::createWithAandC("abc", "xyz");

?>

Voorbeeld is in dit geval even een factory van zichzelf. (Een hele losse interpertatie ervan.) Ik heb 2 verschillende manieren van aanmaken gegeven. De een is met optionele parameters en de ander puur met setters. Het is sowieso een goed plan om dit via static methods te doen, dat scheelt je wat typewerk en je bent niet gekoppeld aan de concrete class.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dit lijkt me wel een goede oplossing.

Ik ga dit meteen is proberen toe te passen.

Bedankt