[OOP] Goede aanpak?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior PHP developer

Functie Jouw werkzaamheden zullen grotendeels bestaan uit het in teamverband ontwerpen, vernieuwen en door ontwikkelen van het systeem. Het is echt back-end werk (bijvoorbeeld het doorontwikkelen van een API) en dit moet je dan ook liggen. Ze zijn niet persee gebonden aan talen of tools maar gebruiken graag de technieken die het beste aansluiten op de gegeven oplossing. Voor nieuwe (versies van) componenten maken ze veelal gebruik van Go(lang). Bij aanpassingen aan bestaande onderdelen gebeurt dit in PHP en C++. Het team is heel divers, er hangt een relaxte sfeer en ze organiseren regelmatig leuke music nights, game nights e.d.

Bekijk vacature »

Senior Airport Developer ( System engineer)

De functie Nice to know (you) De nieuwe A-pier wordt de duurzaamste van Schiphol. Als deze af is ligt er 4000 vierkante meter zonnepanelen op het dak. En de toiletten? Die spoelen door met regenwater. we gaan ervoor: het creëren van de meest duurzame en hoogwaardige luchthavens ter wereld. een toekomstbestendig en duurzaam Schiphol. Daar werken we elke dag hard aan in team Development & Sustainability. Jij bent regisseur, expert én aanjager van de ontwikkeling van Schiphol. Connecting your world Hoe maak je de ambities en doelstellingen van Schiphol concreet in een project? De waarde voor Schiphol naar eisen die

Bekijk vacature »

OutSystems Developer

Dit ga je doen Het van scratch af aan ontwikkelen van applicaties met OutSystems; Het aanhaken bij diverse projecten binnen de organisatie; Schakelen met de business; Meedenken over de mogelijkheden van het platform binnen de organisatie. Hier ga je werken Deze organisatie is een toonaangevende speler in de vastgoedbranche en telt momenteel ruim 500 medewerkers. Met meer dan 150 applicaties staat er een complex applicatielandschap, bestaande uit standaard- en maatwerkapplicaties. De maatwerkapplicaties worden ontwikkeld door een inhouse development team. Het doel voor de komende periode is het verder vernieuwen en optimaliseren van het huidige applicatielandschap. Zo staat de organisatie aan

Bekijk vacature »

Junior Software Developer (HBO / WO)

Functie omschrijving Wij zijn op zoek naar een Junior Software Developer! Sta jij aan het begin van je carrière en heb je net je HBO of WO-diploma in de richting van ICT of Techniek mogen ontvangen? En heb jij grote affiniteit met software development? Dan hebben wij bij Jelling IT Professionals de perfecte opdrachtgever in de omgeving van Utrecht, die jou tot een volwaardig Fullstack Software Developer gaat opleiden. Binnen deze grote organisatie krijg je ruime en professionele trainingen die jouw in korte tijd vakbekwaam maken. Niet alleen het aan technisch aspect, maar ook zeker jouw persoonlijke ontwikkeling wordt veel

Bekijk vacature »

Senior Java Developer

Als Senior Java Developer bij Sogeti ben je onderdeel van onze toonaangevende community die bestaat uit ruim 100 gepassioneerde Java professionals. In teamverband lever je mooie prestaties. Daarmee draag je aan bij de meerwaarde die wij leveren aan onze top-opdrachtgevers. Geen werkdag is hetzelfde! Je bent voortdurend bezig met het oplossen van allerlei complexe vraagstukken binnen bedrijfs kritische systemen voor onze klanten in regio Noordoost zoals DUO, ING, CJIB en Tendernet. Natuurlijk krijg jij de mogelijkheid je verder te certificeren in dit vakgebied. We organiseren regelmatig technische Meetups en doen veel aan kennisdeling. Sogetisten hebben plezier in hun werk en

Bekijk vacature »

Ervaren PHP Developer

Functieomschrijving PHP Developer met brede ervaring gezocht! Ben jij een Full Stack PHP Developer met brede ervaring die toe is aan een volgende stap? Lees dan snel verder! Voor onze eindklant in de regio Nunspeet zijn wij op zoek naar een ervaren PHP Developer die het IT Team van deze organisatie gaat versterken. Wij zoeken een enthousiaste en breed georiënteerde IT-er die er voor gaat zorgen dat deze innovatieve organisatie de volgende stap gaat maken. Om deze functie goed uit te kunnen voeren moet je communicatief goed zijn en in staat zijn om zelfstandig problemen op te lossen. Daarnaast bestaat

Bekijk vacature »

Web Developer

Bedrijfsomschrijving ENGIE Nederland is onderdeel van de beursgenoteerde ENGIE Groep. ENGIE is actief in 70 landen, met wereldwijd 150.000 medewerkers. Als groep is het de missie om bij te dragen aan de verduurzaming van de wereld. ENGIE Energie biedt energiediensten aan particulieren en grootzakelijk en gaat de uitdagingen van de energietransitie aan door het beschikbaar maken van duurzame energie, het streven de klimaatverandering tot een minimum te beperken, leveringszekerheid te bieden en zorg te dragen voor een verantwoord gebruik van de beschikbare resources. ENGIE Energie investeert daarom in hernieuwbare energiebronnen zoals zon, wind en bio-gas. Functieomschrijving Heb jij veel ervaring

Bekijk vacature »

.NET developer

Functie Heb jij veel kennis van ASP.NET Webforms en wil jij juist de overstap maken naar ASP.NET Core? Wij zijn per direct op zoek naar een ervaren .NET Webdeveloper die met ons samen ons platform wilt herschrijven van ASP.NET Webforms naar ASP.NET Core. Voor jou de unieke kans om met ons samen te innoveren en kennis op te doen van de nieuwste technieken binnen de Microsoft Stack. Wij hebben een development team met 10 IT specialisten bestaande uit onder andere 4 backend .NET developers en twee front-end developers. Wij zijn continu bezig om ons als team en bedrijf te blijven

Bekijk vacature »

Lead developer (PHP, Symfony, DDD)

Functie Als Lead developer zorg je ervoor dat het team (bestaande uit zowel junior als ervaren developers) in staat is om de kwaliteit van de software (en code) verder te verhogen. In samenwerking met het team, de product owner en de andere lead developers zet je technische lijnen uit en bepaal je de prioriteiten per sprint. Lijkt het jou interessant om complexe problemen op te lossen en bijvoorbeeld een nieuwe applicatiestructuur in Symfony op te zetten? Dan komen wij graag met je in contact. Eisen • HBO werk- en denkniveau (ze kijken niet naar papieren, maar naar denkniveau, motivatie en

Bekijk vacature »

Oracle Developer / PL SQL

Dit ga je doen Software ontwikkeling aan een internationaal gebruikt pakket; Werken met technieken als Oracle 19c, Toad, PL/SQL, Oracle Forms, Reports en Designer; Meedraaien in internationale projecten; Meedenken over technisch en functioneel ontwerp; Samenwerken met collega's als Informatie Analisten, Testers en Release Managers; Soms wensen en eisen afstemmen met de business. Hier ga je werken Onze klant, een internationaal bekend bedrijf dat essentiële producten maakt waar iedereen graag gebruik van maakt, zoekt versterking in het Software Development team. Samen met 3 developers, een release manager, een informatie analist en 3 testers werk jij aan een systeem waarmee complexe producten

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Back-end Developer Java

Dit ga je doen Het (door)ontwikkelen van een zelfgebouwde applicatie in Java, Spring Framework, SQL, HTML, CSS en Javascript; End-to-end beheer m.b.t. de applicatie en koppelen van applicaties binnen het landschap; Ontwikkelen van rapportages voor de interne organisatie; Ontwikkelen van aanvullende functionaliteiten m.b.t. de applicatie; Uitvoeren van testen en code reviews. Hier ga je werken Binnen deze organisatie kom je te werken op de afdeling die medische gegevens verzamelt vanuit het hele land. Denk hierbij aan vertrouwelijke persoonsgegevens. Het team verwerkt al deze data met als doel het waarborgen en verbeteren van de kwaliteit van de zorg in heel Nederland.

Bekijk vacature »

Software Ontwikkelaar

Functieomschrijving In deze uitdagende functie als Software Developer ga je de volgende taken uitvoeren: Maatwerk back-end software programmeren; API koppelingen bouwen; Software optimaliseren voor klanten; Bouwen maatwerk applicaties; Werken met Microsoft stack zoals C#, .NET (Core) en Entity framework; Bedrijfsprofiel Je gaat werken bij een klein softwareontwikkelingsbureau, die maatwerk software bouwt voor klanten door heel Nederland. Dit doen zij al meer dan 20 jaar. Het is van oorsprong een familiebedrijf, opgezet door de eigenaar, die er nog steeds werkt. Het team bestaat vooral uit back-end developers en één systeembeheerder. Je krijgt veel kans om jezelf te ontwikkelen en krijgt tevens

Bekijk vacature »

Softwareontwikkelaar Cleopatra

Functieomschrijving: De directie Verkeer en Openbare ruimte van de gemeente Amsterdam beschikt over een softwareapplicatie, "Cleopatra", waarmee geautomatiseerde handhaving plaatsvindt (op basis van kentekenherkenning) van bepaalde gebieden waarin toegangseisen worden gesteld aan het verkeer. Voorbeelden ervan zijn de milieuzones, de zone zwaar verkeer, handhaving van bromen snorfietser op het fietspad en autoluwe gebieden. Voor de doorontwikkeling en uitbreiding ervan zijn gespecialiseerde softwareontwikkelaars nodig die helpen bij het programmeren van de handhavingsmodules voor nieuwe gebieden en het verbeteren en bijwerken van de bestaande onderdelen van de softwareapplicatie.De opdracht bestaat uit: het programmeren van de diverse modules;het tijdens demo's tonen van de

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Pagina: « vorige 1 2

30/03/2011 20:58:17
Quote Anchor link
Niels Kieviet op 30/03/2011 18:46:28:
Winkelwagen als object? Wil je dat wel?
(...)


Waarom niet? Je kunt best een winkelwagen hebben, de meest elementaire vorm ervan is dat het een soort van stack is. Dan heb je wel weer iets nodig die die stack afhandelt (iterator).
Bij een database is het inderdaad wel gebruikelijk om een tabel order en een tabel order regel te hebben. De tabel order houd alle orders bij, order regel de items van deze orders.
Gewijzigd op 30/03/2011 21:00:13 door
 
PHP hulp

PHP hulp

04/05/2024 22:58:39
 
Niels K

Niels K

30/03/2011 21:10:44
Quote Anchor link
Quote:
Nee, dat wil ik eigenlijk niet maar je moet wat...

Je kan het nu toch dan snel aanpassen?

Hieronder een 'klein' opzetje gegeven.. Meer tijd heb ik niet, alles berust op hersenspinsel dus er kunnen fouten in zitten :) Succes..

Order item, klant, adres moet je zelf even maken.. (verzinnen)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<?php

/**
 * @author Niels Kieviet <[email protected]>
 */

class GsOrder
{
    
    /**
     * (evt) opgetreden foutmeldingen
     */

    protected $errors = array( );
    
    /**
     * Array met order items
     */

    protected $items = array( );
    
    /**
     * Factuuradres
     */

    protected $factuuradres;
    
    /**
     * Afleveradres
     */

    protected $afleveradres;
    
    /**
     * Overige (database) velden, even geen zin om die hier te noteren, dat kan je zelf wel (
     * bij mij doet Zend_Db dat :)
     */
    
    /**
     * Je kan hier nog meer definieren zoals:
     *
     * - Betaalmethode
     * - Verzendmethode
     * - Order kortingen
     * - Factuur
     *
     * noem maar op
     */
    
    
    /**
     * Constructor
     */

    public function __construct( )
    {

        // herberekenen van order
        $this->recalculate( );
    }

    
    /**
     * Order zetten vanuit klant?
     */

    public function setFromCustomer( $customer )
    {

        $this->setFromArray( $customer->get() ); // Of ->getArray / toArray ofzo.
        // Factuur, aflever adres zetten?

        $this->setFactuuradres( $customer->getFactuuradres( ) );
        $this->setAfleveradres( $customer->getAfleveradres( ) );
    }

    
    public function addItem( Orderitem $orderitem )
    {

        if( !isset( $this->items[$orderitem->articlenr] ) ) {
            $this->items[$orderitem->articlenr] = $orderitem;
        }

        else {
            // Ophogen aantal? Of wil je een nieuwe regel?
            $this->items[$orderitem->articlenr]->addCount( 1 ); // Of countPlus, verzin iets :)
        }
    }

    
    public function getItem( $articlenr ) // Aan de hand van articlenr
    {
        return $this->items[$articlenr];
    }

    
    /**
     * Ook nog methodes als getItems, clearItems en noem maar op
     */
    
    /**
     * Methode voor het zetten van variableen vanuit een array
     */

    public function setFromArray( $data )
    {

        foreach( $data as $key => $value ) {
            if( property_exists( $this, $key ) && !is_object( $this->$key ) ) {
                $this->$key = $value;
            }
        }
    }

    
    /**
     * Herbereken van de order
     *
     * - totalen
     * - aantallen (items)
     * - kortingen
     *
     * noem maar op
     */

    public function recalculate( )
    {

        // Succes!
    }
    
    /**
     * Methode voor het opslaan van de order
     */

    public function save( )
    {

        // succes ;)
    }
    
    /**
     * Totaal shizzle
     */

    public function getTotalAmount( )
    {

        $total = 0;
        foreach( $this->getItems as $item ) {
            $total += $item->getAmount( );
        }

        return $total;
    }

    
    // Enzo kan je nog wel wat methoden verzinnen
}

?>


@Karl

Nu gewoon, omdat dit eigenlijk gewoon je order is.. ? Je kan in je controller je order naar de view gooien en in de view gewoon de order items ophalen? Anders is dat toch dubbel?
Gewijzigd op 30/03/2011 21:14:04 door Niels K
 
Bram Boos

Bram Boos

30/03/2011 21:35:25
Quote Anchor link
Dankje Niels, maar.... hoe doe jij het met de query's enzo? Gewoon in de class zelf of een aparte class of hoe..?
 
Niels K

Niels K

30/03/2011 21:38:30
Quote Anchor link
Zoals ik al zei in het commentaar in de klasse maak ik gebruik van Zend_Db_Table_Row. Een row klasse kan worden opgeslagen (denk aan de save functie) en dan wordt door de abstracte Zend_Db_Table_Row klasse een query uitgevoerd die netjes alle waarden opslaat.

google anders even. :)
 

30/03/2011 22:04:34
Quote Anchor link
Niels Kieviet op 30/03/2011 21:10:44:
(...)
@Karl

Nu gewoon, omdat dit eigenlijk gewoon je order is.. ? Je kan in je controller je order naar de view gooien en in de view gewoon de order items ophalen? Anders is dat toch dubbel?


Ik zou daar pas in een later stadium aan toe komen. Mijn winkelwagentje is zoals het fysiek is een ding waarin ik mijn objecten (items / artikelen) kan opslaan.
Als er afgerekend moet worden, dan pas kom je bij een kassa uit o.i.d. Het voorbeeld wat jij hebt gemaakt vind ik eigenlijk niet zo mooi. Ik heb het idee dat je een aantal dingen in elkaar hebt geschoven, die ik persoonlijk uit elkaar zou houden (maar ik ga er niet dieper op in, want daar heb ik geen tijd / zin / fut voor, daarom reageer ik ook steeds met korte dingen).
Bram Boos op 30/03/2011 21:35:25:
Dankje Niels, maar.... hoe doe jij het met de query's enzo? Gewoon in de class zelf of een aparte class of hoe..?

Het netste is natuurlijk dat je gewoon ergens (moet je zelf maar verzinnen) een object in kan douwen. Echt je object. Hopla weg. En dat je het later weer kan opvragen. Hopla daar is het weer. Daarvoor kan je een object database gebruiken, maar die worden niet echt ondersteund, dus dan pak je een orm zoals doctrine die van je mysql database een virtuele object georiënteerde database maakt.
 
Niels K

Niels K

01/04/2011 18:58:37
Quote Anchor link
Waarom vind je mijn voorbeeld niet mooi? Dat zijn toch dingen die specifiek met een order te maken hebben?

En waarom pas in een later stadium?

Wat ik gewoon doe is het volgende: (kort en summier)
In de BaseController maak ik alvast een 'row' aan voor Order en gooi ik hem in de sessie. Zie onderstaand voorbeeld.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php

class BaseController extends Zend_Controller_Action
{
    public function preDispatch( )
    {

        if(!$this->session->geladen) {
            $this->session->order = new Table_Order()->createRow(); // Create row heeft met Zend Framework DB Table te maken.
            $this->session->geladen = true;
        }
    }


    // Waarden naar de view schrijven
    public function postDispatch( )
    {

        $this->view->order = $this->session->order;
    }
}

?>


En in de view doe ik gewoon

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

foreach($this->order->getItems as $orderitem) {
    // etc
}

?>


Wat is daar fout aan dan?
 

03/04/2011 10:53:00
Quote Anchor link
Niels Kieviet op 01/04/2011 18:58:37:
Waarom vind je mijn voorbeeld niet mooi? Dat zijn toch dingen die specifiek met een order te maken hebben?(...)


In principe moet jij het factuur- en afleveradres al opslaan in je object (in ieder geval dat doe je). Daarnaast sla je ook nog eens een aantal op in het product, dat vind ik ook niet goed. Verder is het zo dat je niet aan een product verschillende eigenschappen kan hangen. Dan zou het bij jou weer een andere instantie moeten worden.
Zoals ik al uitlegde zou ik het veel meer gelijkend doe aan de echte wereld. Het winkelwagentje weet ook niets van de klant af, het weet alleen welke producten het heeft. Maar de aantallen e.d. dat weet het ook niet, want het slaat alleen de producten op. Bij de kassa wordt pas de aantallen en de prijs uitgerekend.
 
Mark Kazemier

Mark Kazemier

03/04/2011 14:11:44
Quote Anchor link
Karl Karl op 03/04/2011 10:53:00:
Niels Kieviet op 01/04/2011 18:58:37:
Waarom vind je mijn voorbeeld niet mooi? Dat zijn toch dingen die specifiek met een order te maken hebben?(...)


In principe moet jij het factuur- en afleveradres al opslaan in je object (in ieder geval dat doe je). Daarnaast sla je ook nog eens een aantal op in het product, dat vind ik ook niet goed. Verder is het zo dat je niet aan een product verschillende eigenschappen kan hangen. Dan zou het bij jou weer een andere instantie moeten worden.
Zoals ik al uitlegde zou ik het veel meer gelijkend doe aan de echte wereld. Het winkelwagentje weet ook niets van de klant af, het weet alleen welke producten het heeft. Maar de aantallen e.d. dat weet het ook niet, want het slaat alleen de producten op. Bij de kassa wordt pas de aantallen en de prijs uitgerekend.


Handige webshop dan, als ik pas bij het afrekenen zie hoe duur het is en kan bepalen hoeveel producten ik wil hebben. En dan wil je afrekenen, weet je niet bij welke klant het winkelwagentje hoort. Ook niet erg handig.

Ik zou het zelf opdelen in product en orderregel. Een orderregel geeft het product en aantal aan. Een winkelwagentje heeft meerdere oderregels en een klant van wie het winkelwagentje is.
 

Pagina: « vorige 1 2



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.