Juiste denkwijze gebruik methodes?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PL/SQL Developer Nieuwbouw Internationaal

Bedrijfsomschrijving Het bedrijf is internationaal en heeft vestigingen in meer dan 30 landen. Vanuit de afdeling in Utrecht worden 15 landen bediend. Op dit moment zijn er 2200 gebruikers van het platform. In de toekomst zullen daar nog een aantal landen en een hoop gebruikers bijkomen. Zodra jij bij dit bedrijf naar binnen stapt, zal je direct op merken dat het een professioneel bedrijf is. Des al niet te min kun je bij iedereen naar binnen lopen en staat iedereen je met open armen op te wachten. Verder zal je te maken krijgen met korte communicatielijnen en kleine agile achtige

Bekijk vacature »

Software Developer die een bijdrage levert aan de

Dutch is mandatory for this position. Vind jij het belangrijk om een baan te hebben die bijdraagt aan een schonere wereld? Een baan waarbij je direct impact hebt in het digitalisering van informatiestromen, oftewel een wereld zonder papier. Doormiddel van hun eigen ontwikkelde software kunnen bedrijven digitaal documenten beheren, delen, ondertekenen en archiveren. Dat betekent dat er geen printers of scanners meer nodig zijn en je bent niet meer afhankelijk van koeriers. Dit scheelt tijd, geld en grondstoffen. Samen met een team van vijf developers ga je nieuwe software oplossingen ontwikkelen. Daarnaast ga je ook nieuwe gebruiksvriendelijke functionaliteiten aan onze

Bekijk vacature »

IT-Traineeship junior software programmeur

Zoek jij een stevige uitdaging en de mogelijkheid om veel nieuwe dingen te leren in een dynamisch vakgebied? Doe mee aan ons IT Professional Program en ontwikkel jezelf tot software engineer! Je begint met een opleidingstraject van ongeveer 4 maanden. Hierin ga je aan de slag met verschillende technieken die je op conceptueel niveau leert te overzien en interpreteren. Onderwerpen die aan bod komen zijn o.a. programmeren (Java/C#/Python), Object Oriëntatie, Databases, Webservices & webtechnologieën, Domain Driven Design en Continuous Integration/Continuous Delivery. Sommige van deze onderdelen sluit je af met een examen en bijbehorende certificering. Het opleidingstraject zelf sluit je af

Bekijk vacature »

Advanced Mendix Developer Order Management Systeme

Advanced Mendix Developer Order Management Systemen (NL) Den Haag HBO/WO IT Professional "Als Advanced Mendix Developer impact maken op de groeiende e-commerce markt? Je doet dit bij PostNL door met je DevOps team onze Mendix applicaties verder te ontwikkelen, waarbij je complexe logistieke business processen vertaalt naar applicaties die ons primaire proces ondersteunen". Wat ga je doen? PostNL wordt een postal tech company We nemen de ontwikkeling van onze IT applicaties in eigen hand door onze eigen software-ontwikkel-capability op te zetten. Als Advanced Mendix Developer ben je onderdeel van een multidisciplinair, agile werkend Business-IT-team. Samen met dit team bouw je onze logistieke IT-applicaties verder

Bekijk vacature »

Application Developer Tech Lead

We’re Hiring! A UPS Application Developer Tech Lead *REMOTE WORK POSSIBLE FOR THIS ROLE As a Tech Lead Developer at UPS you work on delivering functionality for highly complex IT systems. You collaborate in agile teams and participate in emerging technologies and processes like CI/CD and DevOps to ensure that we meet our objectives effectively and efficiently. Your primary role is to perform full system life cycle activities, e.g. analysis, technical requirements, design, coding, testing and the implementation of software. Working in our Europe development center in Eindhoven means working in an international team with onsite people as well as

Bekijk vacature »

.NET Developer

Jouw baan Het draait om vernieuwing en verbetering: Jouw gave IT oplossingen worden VWE breed door alle andere teams ingezet. Jij hebt dan ook een belangrijke bijdrage aan de efficiency, consistentie en eenduidigheid binnen de IT programmatuur. Hiervoor werk je met de nieuwste technieken. Onze flinke equipe ervaren IT developers is verdeeld over verschillende zelfsturende teams. Jouw plek is binnen het team dat zich richt op de ontwikkeling van programmatuur ter ondersteuning van andere ontwikkelteams. Jij bent een van de kartrekkers die bestaande programmatuur in een nieuwe jas steekt, weet waar de behoeftes in de verschillende teams liggen en waar

Bekijk vacature »

Outsystems developer - Energiemarkt

Ben jij een ervaren Outsystems developer met de skills om te luisteren, te analyseren en te inspireren? Dit is een uitgelezen kans om je aan te sluiten bij een snel groeiend team binnen CGI. Vanuit het team leveren we IT-projecten die de levens van miljoenen mensen raken! Wat ga je doen? Als OutSystems developer ontwikkel en implementeer je binnen ons team nieuwe applicaties, verbeter en onderhoud je de prestaties van bestaande applicaties en werk je aan diverse projecten van onze klant. Je helpt met het omzetten van wensen naar werkende software van het hoogste niveau op basis van een Agile-werkmethodiek.

Bekijk vacature »

Azure developer / Big Data

Bedrijfsomschrijving Als Azure Developer ga je in een team van experts aan de nieuwste digitale technologieën werken om klanten over de hele wereld te ondersteunen met het ontwerpen van slimme processen voor havens, steden, luchthavens en gebouwen! Door middel van real-time data in combinatie met voorspellende analyses, AI, Deep Learning en Machine Learning zorgen jij en je team voor inzichten gevaren en klimaat risico’s voor steden, luchthavens, gebouwen en meer. Als Azure Developer met Big Data ervaring ga je aan de slag met diverse inhouse projecten en pas je jouw kennis toe in verschillende fases van de software development life

Bekijk vacature »

Fullstack .NET developer voor de sociale sector

Bedrijfsomschrijving Dit mooie bedrijf is al ruim 30 jaar actief binnen de sociale sector. Ze helpen mensen met een afstand tot de arbeidsmarkt naar werk toe, maar ook op het gebied van zorg en welzijn dragen zij hun steentje bij. Dit doen ze inmiddels niet alleen meer in Nederland maar ook over de landsgrenzen heen. Het bedrijf is nu 700 man groot en de IT afdeling is ondersteunend aan de business en bestaat nu uit 20 medewerkers verdeeld over 2 development teams. Functieomschrijving Je komt te werken binnen een van de development teams. Je gaat werken aan portalen voor de

Bekijk vacature »

Erv.Software Ontwikkelaar voor slimme oplossingen

Dutch is mandatory for this position. Ervaren Software Ontwikkelaar voor slimme oplossingen binnen de Transport & Logistiek (C#.NET/Azure/65K/R’dam) Jij gaat samen met collega’s (complexe) logistieke vraagstukken oppakken, met als doel slimme software oplossingen te bedenken en te ontwikkelen. Een maaltijd box leverancier van Nederland was op zoek naar een oplossing om hun logistieke processen te optimaliseren en de klantervaring te verbeteren. Hiervoor is een app gebouwd die het hele distributie proces inzichtelijk maakt van magazijn tot bezorger, en van klantenservice tot aan klant. Je kan zien waar welke bezorger zich bevind, maar ook welke tempratuur de producten op dat moment

Bekijk vacature »

Developer Powershell

Bedrijfsomschrijving Je komt als Developer Powershell te werken in de omgeving Deventer/Apeldoorn bij een nationaal opererende organisatie. Ze blijven constant in beweging en zijn altijd bezig om de laatste innovaties door te voeren. De organisatie werkt met grote hoeveelheden data, zij richten zich zowel op de B2B als B2C markten en zijn pionier binnen hun gebied van expertise. De applicaties draaiende op het platform verwerken per maand aanvragen voor meer dan 6 miljoen gebruikers en jij mag een rol gaan spelen in de complexe technieken en infrastructuur dat schuilt rondom deze applicaties! Je komt in een team waarbij de helft

Bekijk vacature »

Agile Developer - Banking

Do you embody the Agile principles? Do you have passion for innovation and get motivated by complex challenges and innovative solutions? Are you ready for working with state of the art technology stacks? Your day-to-day activities As an experienced full stack Agile Developer you design, develop and test software systems and applications. You know what the software system of the client needs to do and you find ways to improve and revolutionize them. You create software tailored to the clients’ specific needs. High quality is important to you. Continuous Integration and Continuous Deployment are no strangers to you. Things you

Bekijk vacature »

GIS Developer

Bedrijfsomschrijving Als GIS Developer kom je te werken bij een high-tech ingenieursbureau in de regio van Utrecht. Al ruim 15 jaar werken ze aan de eigen ontwikkeling van innovatieve applicaties op het gebied van mobiliteit en infrastructuur. Met al hun jaren ervaring bedenken en ontwikkelen ze geografische oplossingen voor grote en bekende organisaties in Nederland. Momenteel maken duizenden gebruikers gebruik van hun applicaties en proberen ze constant vernieuwend te zijn in hun aanbod naar klanten. Je komt te werken in een informeel Agile minded team van 25 collega's, waarvan 6 andere (GIS) developers. Als Developer ben je in teamverband verantwoordelijk

Bekijk vacature »

Dynamics NAV / 365 BC Developer

Bedrijfsomschrijving Als Dynamics Business Central Developer kom je te werken bij een organisatie in regio Ede die gespecialiseerd is in het ontwikkelen en implementeren van software. Zo hebben ze een eigen ontwikkelde applicatie in de markt gezet voor de agrarische sector die internationaal zeer succesvol is en waar grote vraag naar is. Door deze software worden klanten op een slimme manier ondersteund bij voorraden, administratie, het maken van planningen, het tonen van real time informatie en nog veel meer. Dit platform is ontwikkeld op basis van Dynamics 365 Business Central, waar bovenop applicaties middels .NET Core, React en Azure worden

Bekijk vacature »

GE Smallworld Ontwikkelaar - Utilities

Wij zoeken een Geo-ICT Smallworld ontwikkelaar met interesse in de nieuwste ontwikkelingen in de Energiemarkt! Wat ga je doen? Wist je dat CGI het grootste bedrijf is met een eigen Geo-ICT community? Dat we ook in verschillende landen waaronder Nederland de koploper zijn op het gebied van Geo-ICT dienstverlening? We breiden onze Geo-ICT activiteiten nog steeds verder uit. Zo zijn wij ons vooral aan het richten op de nieuwste ontwikkelingen in de energiemarkt en de daarbij horende energietransitie. Het CO2 neutraal maken van de samenleving is onze doelstelling en jij kan daar een actieve bijdrage aan leveren! Onze Geo-ICT practise

Bekijk vacature »
Kevin de Groot

Kevin de Groot

24/07/2012 14:17:35
Quote Anchor link
Hoi mensen,

Ik ben al een tijdje geregistreerd op dit forum, echter, mijn gegevens zijn niet meer bekend. Heb destijds waarschijnlijk een ander e-mailadres gebruikt, maar dat terzijde.
Ik zit met een vraagje. Ik ben sinds twee weken wat meer bezig met OOP en ik weet nog steeds niet hoe bepaalde dingen het handigst zijn op te lossen.
Mijn vraag:

Ik heb zojuist een database-klasse geschreven (genaamd 'Database') en hier enkele methodes aan toegevoegd. Verbinding maken en queries uitvoeren gaat middels MySQLi, maar dat terzijde. Nu wil ik bedrijfsgegevens ophalen uit de database, dus ik heb een klasse 'Bedrijf' aangemaakt. Hoe kan ik dan het beste de gegevens ophalen? Hieronder mijn code met de twee/drie methodes die mij het beste lijken. Welke raden jullie mij aan voor toekomstig en universeel gebruik? Hieronder dus mijn code:

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
<?php

class Bedrijf
{
    private $bedrijfsid;
    
    public function setBedrijfsID($bedrijfsid)
    {

        $this->bedrijfsid = (int)$bedrijfsid;
    }

    
    public function getBedrijfsID()
    {

        return $this->bedrijfsid;
    }

    
    // Hieronder methode 1
    // Één methode voor het ophalen van gegevens en die aanroepen middels een andere methode
    // Voordeel: éénmaal lange(re) code voor de query, kan onderaan in de code, zit dus niet in de weg

    
    public function getBedrijfsnaam()
    {

        return getBedrijfsgegevens('naam');
    }

    
    private function getBedrijfsgegevens($kolom)
    {

        $oDatabase = Database::getInstance();
        
        $result = $oDatabase->setQuery("SELECT ". $kolom ." FROM bedrijf WHERE id = ". $this->bedrijfsid ." LIMIT 0,1");
        
        if ( $oDatabase->countResults($result) == 1 )
        {

            $fetch = $oDatabase->fetchResults($result);
            
            return (!empty($fetch[$kolom])) ? $fetch[$kolom] : 'onbekend';
        }

        else
        {
            return 'onbekend';
        }
    }

    
    // Hieronder methode 2
    // Dus per gegeven een aparte verbinding en methodes
    // Voordeel: per waarde is een specifieke output te genereren

    
    public function getBedrijfsnaam()
    {

        $oDatabase = Database::getInstance();
        
        $result = $oDatabase->setQuery("SELECT naam FROM bedrijf WHERE id = ". $this->bedrijfsid ." LIMIT 0,1");
        
        if ( $oDatabase->countResults($result) == 1 )
        {

            $fetch = $oDatabase->fetchResults($result);
            
            return (!empty($fetch['naam'])) ? $fetch['naam'] : 'onbekend';
        }

        else
        {
            return 'onbekend';
        }
    }

    
    // Verder zag ik ook een methode 'load()' die alle velden uit de database haalt.
    // Deze velden worden in de $this-variabelen gezet middels methodes.
    // Dit lijkt me onhandig, want ik hoef niet alles te selecteren als ik enkel de
    // bedrijfsnaam wil selecteren. Ongeveer een voorbeeld:

    
    public function load()
    {

        $oDatabase = Database::getInstance();
        
        $result = $oDatabase->setQuery("SELECT * FROM bedrijf WHERE id = ". $this->bedrijfsid ." LIMIT 0,1");
        
        if ( $oDatabase->countResults($result) == 1 )
        {

            $fetch = $oDatabase->fetchResults($result);
            
            $this->bedrijfsid = $fetch['id'];
            $this->bedrijfsnaam = $fetch['naam'];
            // enz.
        }
        else
        {
            return 'onbekend';
        }
    }

    
    public function getBedrijfsnaam()
    {

        return $this->bedrijfsnaam;
    }
}


?>


Alvast bedankt voor het meedenken en voor de tips.

EDIT: de code kan fouten bevatten, is puur een voorbeeld :)
Gewijzigd op 24/07/2012 14:18:44 door Kevin de Groot
 
PHP hulp

PHP hulp

08/05/2021 15:39:04
 
Pim -

Pim -

24/07/2012 20:42:16
Quote Anchor link
Richt je niet op onvolledige objecten, maar vul ze altijd volledig. Als je je, zoals jij nu doet, met Object Relational Mapping bezighoudt, het maken van dergelijke 'Bedrijf' objecten a.d.v. DB tabellen vormen onvolledige objecten een groot probleem, omdat je dan niet uit kan gaan van het werken van je code. Je weet immers niet of objecten geladen zijn of niet (zie ook).

Dus je wil dan in 1x het hele model laden. Daar zijn 2 veelgebruikte methoden voor: het active record (AR) en de data mapper (DM). Jouw load() functie is een implementatie van het AR, een save() functie maakt het dan af. Een DM is een apart object dat de opslag van je modellen regelt, dit is misschien mooier, maar voegt ook een extra laag van complexiteit toe. Ik raad je dus methode 3 aan.

Bedenk wel dat je load() functie ofwel een exception wil laten gooien als het fout gaat, ofwel false terug laten geven (en true als het goed gaat). Een of andere string teruggeven is volstrekt nutteloos.
 
Kevin de Groot

Kevin de Groot

24/07/2012 21:23:40
Quote Anchor link
Bedankt voor jouw antwoord :)
Ik heb even "rond-gegoogled" en sommige dingen worden me nu wél wat duidelijker :)
Echter, heb je een kort voorbeeld voor mij hoe ik dit moet aanpakken in mijn voorbeeld? Ik kan dus properties van waarden voorzien middels setters en deze:
- óf laden, als voorbeeld middels load()
- óf saven, als voorbeeld middels save()

Zit ik in de goede richting? Ik ben nieuw met OO. Tutorials op dergelijke websites bevatten niet echt de juiste voorbeelden die ik kan toepassen in mijn eigen code.

Thanks! :)
 
Jan Koehoorn

Jan Koehoorn

24/07/2012 22:08:21
Quote Anchor link
OOP gaat pas in je voordeel werken als je kunt profiteren van dingen als inheritance en datahiding. Als je een class gaat maken voor elke tabel in je database is het zinvol om te kijken wat er telkens verandert en daarvan een abstractie te maken.

Zo zul je bijvoorbeeld altijd te maken hebben met verschillende kolomnamen. Dan is het niet slim om voor elke kolomnaam een aparte membervariabele aan te maken. Het is veel handiger om een array aan te maken en die te laten uitlezen door een parentclass die alle kolomnamen uit je databasetabel trekt. Andere classen kunnen die basisclass dan extenden.

Denk ook na over welke functies je public maakt en welke private, en lees iets over interfaces en abstract classes. Een boek dat ik je kan aanraden is 'Head First Design Patterns'. Maar dan niet het hele boek, alleen de eerste paar hoofdstukken. Die zijn prima om een idee te krijgen van de voordelen van OOP.
 
Kevin de Groot

Kevin de Groot

24/07/2012 22:44:58
Quote Anchor link
Thanks! Ik zal even kijken of dat boek in de "bibliotheek" te vinden is :)

Het blijkt dat ik me er maar verder in moet gaan verdiepen :)
 
Wouter J

Wouter J

24/07/2012 23:07:45
Quote Anchor link
Ik wil natuurlijk geen reclame maken, maar lees eens de OO berichten op mijn site: http://wouterj.nl/serie/orienteer-je-in-objecten/
 



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.