Classes intro

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

In-house .NET software developer

Functie omschrijving Ben jij op zoek naar een uitdagende in-house development functie? Maak jij graag hét verschil m.b.t. interne automatisering? Haal jij energie uit het automatiseren van processen voor je eigen collega's? Dan hebben wij de perfecte vacature voor je! Voor een gezellig Brabants familiebedrijf, zijn wij op zoek naar een .NET software developer. Je gaat in deze zelfstandige functie werken aan de ontwikkeling van eigen applicaties & en het koppelen van deze applicaties aan de ingekocht software. Jouw werkzaamheden zien er als volgt uit: Het management team signaleert behoeftes vanuit de business. Vervolgens worden deze behoeftes uitgewerkt en geprioriteerd.

Bekijk vacature »

Senior .NET developer

Klaar voor een nieuwe uitdaging? Welke technologieën gaan schuil achter de dagelijkse energievoorziening? Als senior .NET developer bij Kenter maak jij samen met je team het verschil, zowel voor de interne organisatie als voor eindklanten. Samen bouwen jullie aan innovatieve dienstverlening met behulp van de nieuwste technologieën en tools. Het is een functie met veel vrijheid, goede arbeidsvoorwaarden én je draagt jouw steentje bij aan de energietransitie. Klinkt dit als iets voor jou? Lees dan verder of solliciteer direct! Wat ga je doen als senior .NET developer? Als senior .NET developer bij Kenter (onderdeel van Alliander) ben je van onschatbare

Bekijk vacature »

Medior/senior PHP ontwikkelaar E-commerce

Functie Het software development team bestaat momenteel 5 scrum teams . Ieder team heeft een eigen SCRUM Master en eigen tester. Zij werken voornamelijk in PHP en met hun eigen geschreven framework wat Symfony based is . Jij bent samen met je collega’s verantwoordelijk voor het interne softwaresysteem en alle projecten die daar omheen lopen. Alles wat jij ontwikkelt, wordt direct toegepast en uitgerold (wereldwijd). Dit maakt jouw werk tastbaar en uitdagend! Een greep uit jouw werkzaamheden: Toevoegen en ontwikkelen van nieuwe functionaliteiten Logistieke software ontwikkelen voor intern gebruik Tientallen gigabytes aan data inzichtelijk maken Altijd op zoek gaan naar

Bekijk vacature »

Java Developer bij een jonge groeiende organisatie

Bedrijfsomschrijving Vind jij het als Java developer ook zo belangrijk dat een bedrijf je de ruimte en tijd geeft voor persoonlijke ontwikkeling? Dan zit je hier helemaal goed. Deze jonge organisatie is opgericht in 2018 en is ondertussen uitgegroeid tot een club van ongeveer 30 medewerkers. Het gaat hier om een echte Java club, die vrijheid en verantwoordelijkheid erg belangrijk vinden. Het bedrijf heeft een informele sfeer en de teams zijn erg hecht met elkaar. Ze delen graag de kennis en ervaringen met anderen, maar vinden andermans mening ook zeer belangrijk. De organisatie zet zich in voor ontwikkeling en besteed

Bekijk vacature »

Embedded Software Developer Games

Functie omschrijving Heb jij affiniteit met hardware en wil jij kleuren binnen een Qt framework? Spreek jij de talen C en of C ++? Dan ben ik wellicht opzoek naar jou! Voor een super gave opdrachtgever in omgeving Delft is er namelijk plek voor een nieuwe kracht! Dit bedrijf is gespecialiseerd in het ontwerpen van software voor een unieke game industrie. Wil jij betrokken worden bij een proces dat loopt van ontwikkeling tot installatie? Waarbij je bezig zult zijn met perfecte systemen die geleverd worden aan binnen en buitenland? Je zult in een team, samen met vier ontwikkelaars, de mooiste

Bekijk vacature »

.NET developer

Functie As a .NET developer you start in a driven and diverse development team. Your team consists of 16 IT professionals, including 7 software engineers. Because your new employer is internationally active, there are also international IT professionals working in the IT department. As a result, the official language is English. As a team you are responsible for a new Cloud Native product. This product runs entirely in Azure with a Progress Database and various Azure Functions. In addition, this product has a JS front-end, a REST API system and a layer in C # .NET. The idea is therefore

Bekijk vacature »

Java developer

Als Java Developer bij Sogeti ben je onderdeel van onze toonaangevende community die bestaat uit ruim 100 gepassioneerde professionals. In teamverband lever je mooie prestaties. Daarmee draag je aan bij de meerwaarde die wij leveren aan onze klanten. Geen werkdag is hetzelfde, je bent voortdurend bezig met het oplossen van allerlei complexe vraagstukken binnen bedrijfskritische systemen. Een voorbeeld hiervan is een cliënt-volgsysteem bij Reclassering Nederland. Andere klanten waar wij onder andere voor werken: KPN, Philips, Nationale-Nederlanden, Kamer van Koophandel, ABN AMRO, Bovemij, Arval en de Politie. Werken bij Sogeti Nieuwe ontwikkelingen volgen we op de voet en delen we binnen de

Bekijk vacature »

Software Developer

Functie omschrijving Heb jij affiniteit met ICT en een WO diploma in de pocket? Dan ben je hier aan het juiste adres. Voor een opdrachtgever in Amsterdam zijn wij op zoek naar kandidaten die (enige) ervaring hebben met Java, Javascript, C of C++. Je zal door middel van trainingen worden opgeleid tot een volwaardige Software Developer. Er wordt tijdens de training natuurlijk veel aandacht besteedt aan de vaktechnische aspecten, maar er gaat ook veel aandacht uit naar jouw persoonlijke ontwikkeling. Bedrijfsprofiel Bij deze opdrachtgever in de omgeving van Amsterdam zoeken ze meerdere enthousiaste kandidaten die hun carrière willen starten met

Bekijk vacature »

Junior .NET developer

Functie Ons programma is voor afgestudeerde enthousiastelingen die het als een uitdaging zien om met een klein dynamisch team bij de grootste bedrijven van Nederland aan de slag te gaan. Tijdens jouw dienstverband word jij begeleid door een talent manager. Het ontwikkelen van jouw talent staat hierbij centraal. Het programma doorloop je met een team van circa 8 Mede- trainees. De eerste maand start je met een fulltime inhouse opleiding. Deze staat geheel in het teken van de werkzaamheden die jij verder in het programma zult uitvoeren. Na deze opleidingsmaand ga je aan de slag in een dynamische omgeving bij

Bekijk vacature »

Front-end developer - working on software for arou

Functie They have recently started looking for an experienced Front-end (mobile/app) developer. Because of the short lines within the team, they are also looking for someone who can communicate with the service desk, sales and support for technical questions. You will join their IT team consisting of about 10 colleagues divided over two teams in rooms opposite each other. Half of these are involved in their front-end. You will work together with, among others, the Architect, 1 senior, 1 junior and there is a Team Leader. In terms of technology, they work with a unique tech-stack, particularly because of the

Bekijk vacature »

Medior .NET developer

Functie Jij gaat als Medior .NET ontwikkelaar aan de slag in ons scrumteam met 6 developers die gepassioneerd en actief bezig zijn om onze spelers kwalitatieve en mooie spelervaringen aan te bieden. Als medior .NET developer ga jij werken aan een technisch hoogwaardig platform welke bezoekerspieken verwerkt van tienduizenden tot honderdduizenden gebruikers per minuut! Ons scrumteam werkt in drie wekelijkse sprints en wij beginnen iedere ochtend met een stand-up. Jij werkt bij ons met C# .NET, .NET Core, React.JS, Xamarin, Azure, Docker en Kubernetes. Wij hechten enorm veel waarde aan het leveren van hoogwaardige en kwalitatieve code. Zodra jij de

Bekijk vacature »

Senior Java developer

Als Senior Developer bij Sogeti ben je onderdeel van onze toonaangevende best-gecertificeerde Java community. Deze bestaat uit ruim 100 gepassioneerde 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 bedrijfskritische systemen. Een voorbeeld hiervan is een cliënt-volgsysteem bij Reclassering Nederland. Andere klanten waar wij onder andere voor werken: KPN, Philips, Nationale-Nederlanden, Kamer van Koophandel, ABN AMRO, Bovemij, Aval en de Nationale Politie. Natuurlijk krijg jij de mogelijkheid je verder te certificeren in dit vakgebied. We

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 »

Software Developer C++ en Perl

Ben je een slimme en enthousiaste universitair opgeleide bèta die graag bij een relatief klein softwarebedrijf wil werken waar de sfeer goed is en eigen inbreng gewaardeerd wordt? Wij, IntelliMagic in Leiden, ontwikkelen technisch hoogwaardige software op het gebied van IT infrastructuur performance analytics. Het type software zorgt voor intellectueel interessante uitdagingen. We ontwerpen de producten zelf en verkopen deze als off-the-shelf software aan grote bedrijven in Europa en de VS. Wij zoeken een ervaren C++ software engineer met kennis van Perl voor een van onze ontwikkelteams. Werkzaamheden Samen met de andere ontwikkelaars specificeren, ontwerpen en implementeren van nieuwe functionaliteit

Bekijk vacature »

Traineeship Full Stack Java developer

Dit ga je doen Start jij op 7 augustus bij de Experis Academy dan kickstart jij jouw IT-carrière! We leiden je op tot een gewilde Full Stack Java Developer met alle kennis en vaardigheden die nodig zijn om de arbeidsmarkt te betreden. Wat kun je verwachten, hoe zit een dag in het leven van een Trainee eruit? Periode 1 Als Full Stack Java Developer Trainee volg je vanuit huis een op maat gemaakte onlinetraining die in het Engels wordt gegeven. De tijd die je kwijt bent aan het volgen van de training kun je vergelijken met een fulltime werkweek. In

Bekijk vacature »
Dennis Achternaam

Dennis Achternaam

22/09/2017 03:44:51
Quote Anchor link
Hallo allemaal,

Voor een introductie in classes / OOP moet ik ervaring opdoen met classes.
Opdracht: classes maken voor ophalen, toevoegen, updaten, verwijderen van gegevens uit de verschillende database tabellen.

mijn idee was:
Eerst een database class maken voor connectie, simpel beginnen.
Dit gedaan en geprint, komt een keurig object uit. daarentegen snap ik nog niet hoe ik dit toepas.
Heb simpelweg de file gerequired en de code aangepast maar krijg nu 3 foutmeldingen:
mysqli_query() expects parameter 1 to be mysqli, object given in C:\wamp64\www\formulier.php on line 120
Undefined variable: sql3 in C:\wamp64\www\formulier.php on line 139
mysqli_error() expects parameter 1 to be mysqli, object given in C:\wamp64\www\formulier.php on line 139

ik heb nog gebrek aan inzicht mbt het toepassen van mijn class, maar dat de $sql3 niet goed zou zijn vind ik erg raar.. wat ben ik vergeten/doe ik fout?

class:
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
<?php
class database {

var
$db_connection = FALSE;    
var
$db_host = "localhost";
var
$db_username = "root";
var
$db_pass = "root";
var
$db_name = "opdracht";

    function
__construct (){
        $this->createConnection();
    }
    
    function
createConnection() {
        $this->db_connection = mysqli_connect($this->db_host,$this->db_username,$this->db_pass,$this->db_name);
    }
    
    function
getConnection() {
        return $this->db_connection;
    }
}


$connection = new database();
?>


formulier.php:
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
<?php

    include_once('header.php');
    require ('test2.php');
    //todo: include class met databasefuncties
    
// zodra submit wordt gedrukt, stop input in variabelen voor verificatie en verzending naar database

if(isset($_POST['submit'])){
        $voornaam = ($_POST["Voornaam"]);
        $achternaam = ($_POST["Achternaam"]);
        $straat = ($_POST["Straat"]);
        $plaats = ($_POST["Plaats"]);
        $email = ($_POST["Email"]);
        $telefoon = ($_POST["Telefoon"]);
        // todo: bestandsnaam /&bestand
        
//define test input functie voor validatie, 3 soorten type input verwacht (varchar-tekst, varchar-email, int-telefoon

    function test_input($var,$soort){
    if ($soort == 'tekst'){
        if(preg_match("/^[a-zA-Z -]*$/",$var) == FALSE)
        return FALSE;
    }
elseif ($soort == 'email'){
        if(filter_var($var, FILTER_VALIDATE_EMAIL) == FALSE){
            return FALSE;
        }
    }

    elseif($soort == 'telefoon'){
    if(preg_match('/^[0-9]{10}$/',$var) == FALSE)
        return FALSE;
    }

    else {
        return TRUE;
    }
    }

    //?todo: validatie bestandtype, overzichtelijk of toch in aparte upload file?
    
// create error voor als leeg, validatie ja, validatie nee, voor elke variabele.
// todo: toevoegen errors voor bestandsvariabelen, tododo: vervangen in array voor overzichtelijkheid

$error = FALSE;
    if (empty($voornaam)) {
        $voornaamerr = "<li>Voornaam is verplicht</li>";
        $error = TRUE;
    }

    elseif (test_input($voornaam, 'tekst') === FALSE) {
        $voornaamerr = "<li>Voornaam ongeldig</li>";
        $error = TRUE;
    }

    else {
        $voornaamerr = "";
    }

    
    if (empty($achternaam)) {
        $achternaamerr = "<li>Achternaam is verplicht</li>";
        $error = TRUE;
    }

    elseif (test_input($achternaam, 'tekst') === FALSE) {
        $achternaamerr = "<li>Achternaam is ongeldig</li>";
        $error = TRUE;
    }

    else {
        $achternaamerr = "";
    }

    
    if (empty($straat)) {
        $straaterr = "<li>Straat is verplicht</li>";
        $error = TRUE;
    }

    elseif  (test_input($straat, 'tekst') === FALSE) {
        $straaterr = "<li>Straatnaam is ongeldig</li>";
        $error = TRUE;
    }

    else {
        $straaterr = "";
    }

        
    if (empty($plaats)) {
        $plaatserr = "<li>Plaats is verplicht</li>";
        $error = TRUE;
    }

    elseif  (test_input($plaats, 'tekst') === FALSE) {
        $plaatserr = "<li>Plaatsnaam is ongeldig</li>";
        $error = TRUE;
    }

    else {
        $plaatserr = "";
    }

    
    if (empty($email)) {
        $emailerr = "<li>Email is verplicht</li>";
        $error = TRUE;
    }

    elseif  (test_input($email, 'email') === FALSE) {
        $emailerr = "<li>Email is ongeldig</li>";
        $error = TRUE;
    }

    else {    
    $emailerr = "";
    }

    
    if (empty($telefoon)) {
        $telefoonerr = "<li>Telefoonnummer is verplicht</li>";
        $error = TRUE;
    }

    elseif  (test_input($telefoon, 'telefoon') === FALSE) {
        $telefoonerr = "<li>Telefoonnummer is ongeldig</li>";
        $error = TRUE;
    }

    else {
        $telefoonerr = "";    
    }


// wanneer error niet aanwezig, verwerk gegevens in database, wanneer wel, creeer error en geef deze weer via errormelding
    if(!$error){
        //todo: Doe de post shit naar database via class

        // oude/huidige sql: insert query in losse variabelen stoppen, per databasetabel dmv loop

        $sql1 = "INSERT INTO persoonsgegevens(voornaam,achternaam) VALUES('$voornaam','$achternaam')";
        
        if (mysqli_query($connection, $sql1)) {
            
            $user_id = mysqli_insert_id($connection);
            $sql2 = "INSERT INTO contactgegevens (email,telefoon,user_id) VALUES('$email','$telefoon','$user_id')";
            //vraagje: kan de $user_id declaratie beter bij persoonsgegevens query weergeven ofniet?
            
            if (mysqli_query($connection, $sql2)) {
        
                $sql3 = "INSERT INTO adresgegevens (straat,plaats,user_id) VALUES('$straat','$plaats','$user_id')";
                if (mysqli_query($connection, $sql3)) {
                    echo '<p style="width:100%; padding:10px; background-color:#32beeb;color:#000000;text-align:center;">Gelukt!</p>';
                    header ("Refresh: 3 url=overzicht.php");
                }
else {
                    echo "Error: " . $sql1 . "<br>" . mysqli_error($connection);
                }
            }
else {
                echo "Error: " . $sql2 . "<br>" . mysqli_error($connection);
            }
        }
else {
            echo "Error: " . $sql3 . "<br>" . mysqli_error($connection);
        }
    }
else{
        // create 1 errormelding voor implementatie, combineer losse errors van elke variabele string (.=) om zo en kleine, overzichtelijke PHP code in de HTML shell te krijgen
        $errormelding = '<ul>';
        if(isset($voornaamerr) && !empty($voornaamerr)){
            $errormelding .= $voornaamerr;
        }

        if(isset($achternaamerr) && !empty($achternaamerr)){
            $errormelding .=  $achternaamerr;
        }

        if(isset($straaterr) && !empty($straaterr)){
            $errormelding .=  $straaterr;
        }

        if(isset($plaatserr) && !empty($plaatserr)){
            $errormelding .=  $plaatserr;
        }

        if(isset($emailerr) && !empty($emailerr)){
            $errormelding .=  $emailerr;
        }

        if(isset($telefoonerr) && !empty($telefoonerr)){
            $errormelding .=  $telefoonerr;
        }
        
        $errormelding .= '</ul>';
    }
}


?>
 
PHP hulp

PHP hulp

06/05/2024 22:51:10
 
Rob Doemaarwat

Rob Doemaarwat

22/09/2017 07:12:55
Quote Anchor link
De $connection is een instance van jouw class 'database', en dat is geen extension van mysqli. In je class maak je wel een $db_connection aan. Kort door de bocht kun je dit probleem dus oplossen door mysqli_query($connection->db_connection, ...) te schrijven.

Wat je normaal echter met zo'n 'wrapper' class probeert te doen is zoveel mogelijk recht-toe-recht-aan ellende uit je code te krijgen. Je zou dus een functie $connection->query() kunnen maken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
public function query($sql){
  return mysqli_query($this->db_connection,$sql);
}

scheelt je steeds wat typewerk.

Of bijvoorbeeld nog abstracter: $connection->insert('tabel',['veld1' => 'waarde1', ...]);

O: 'var' is niet meer van deze tijd. Gebruik public of private of protected.
O2: zoek eens op SQL-injectie, of vul anders een keer 's Hertogenbosch als plaatsnaam in.
O3: als je deze class vaker wilt gaan gebruiken moet je de connection details (user, pass, enz) niet in de class zelf opslaan maar juist als params meegeven in de __construct. Kun je elke keer wat anders meegeven.

Toevoeging op 22/09/2017 07:22:26:

O4: je 'else error' constructie staan in omgekeerde volgorde van de aanroep. Op regel 132 moet je dus de foutmelding geven van $sql3, enz. Nu gaat het meteen al fout op regel 119 met $sql1, en dan kom je dus in de error melding op regel 138 uit. Daar tover je dan ineens $sql3 uit de hoge hoed. Die had je nog niet aangemaakt (want zover kwam je code niet), en dus krijg je een PHP foutmelding.
 
Dennis Achternaam

Dennis Achternaam

22/09/2017 14:50:09
Quote Anchor link
Rob Doemaarwat op 22/09/2017 07:12:55:
Wat je normaal echter met zo'n 'wrapper' class probeert te doen is zoveel mogelijk recht-toe-recht-aan ellende uit je code te krijgen. Je zou dus een functie $connection->query() kunnen maken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
public function query($sql){
  return mysqli_query($this->db_connection,$sql);
}


Ben hiermee aan de slag geweest. Wat ik nog niet snap is het verplaatsen van mijn querycode naar een nieuwe class. ik ben begonnen met een class voor mijn eerste tabel: persoonsgegevens. Deze had ik alsvolgt uitgedacht:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
class persoonsgegevens extends database {
public $sql = "INSERT INTO persoonsgegevens(voornaam,achternaam) VALUES('$voornaam','$achternaam')";
public $firstName = ($_POST["Voornaam"]);
public $lastName = ($_POST["Achternaam"]);
public $userID = mysqli_insert_id($connection->db_connection);

    function
query($sql){
        return mysqli_query ($this->db_connection,$sql);
}

?>


De bedoeling is dat de input van de gebruiker via de class bij de juiste kolommen en tabellen uitkomt, beginnend dus met de tabel persoonsgegevens. en dan moet dit uiteindelijk voor zowel een INSERT, UPDATE, SELECT als DELETE..
Gewijzigd op 22/09/2017 14:51:18 door Dennis Achternaam
 
- Ariën  -
Beheerder

- Ariën -

22/09/2017 15:06:48
Quote Anchor link
Het klinkt een beetje vreemd dat je persoonsgegevens extend van de database-klasse.
Persoonsgegevens zijn immers geen database.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

22/09/2017 15:15:38
Quote Anchor link
Je bent al gewend aan mysqli. Mysqli wordt standaard al als een class aangeleverd door PHP.
Mijn advies zou zijn deze class uit te breiden. Je kunt dan direct je vertrouwde mysqli methods gebruiken maar je kunt de class uitbreiden met custom methods mocht je daar ineens behoefte aan hebben. Leer je zelf overigens aan om classnames te beginnen met een hoofdletter.

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

class Database extends mysqli // <== You see?
{
    public function __construct($host, $username, $passwd, $dbname) {
        parent::__construct($host, $username, $passwd, $dbname);
    }


    /*
     * custom methods
     */

}

$db = new Database('localhost', 'user', 'pass', 'database');
$result = $db->query('SELECT * FROM table');
// etc
?>


Daarnaast kun je de database class ook in andere classes gebruiken

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
<?php
class UserMapper
{
    private $db;

    public function __construct(Database $db) {
        $this->db = $db;
    }


    public function getAllUsers() {
        $result = $this->db->query("SELECT * FROM users");

        if(!$result)
            return NULL;

        return $result->fetch_all(MYSQLI_ASSOC);
    }
}


$db = new Database('localhost', 'user', 'pass', 'database');
$userMapper = new UserMapper($db);

$users = $userMapper->getAllUsers();

if($users) {
    foreach($users as $user) {
        // ...
    }
}


?>
Gewijzigd op 22/09/2017 15:31:17 door Frank Nietbelangrijk
 
Ward van der Put
Moderator

Ward van der Put

22/09/2017 15:20:21
Quote Anchor link
Wat mij aanvankelijk goed geholpen heeft, is het strikt scheiden van dingen de iets doen en dingen die iets zijn. Die scheiding ontbreekt in jouw klasse Persoonsgegevens, want die is iets én die doet iets. Zoals Ariën al aankaart, kun je het sleutelwoord "extends" vrij letterlijk lezen als "is een": "persoonsgegevens is een database" klopt niet, daar ontbreekt nog wat.

Wat je eigenlijk nodig hebt, is een klasse met persoonsgegevens (of een persoon) enerzijds en een tweede klasse die de persoonsgegevens opslaat. Ik gebruik daarvoor meestal een data mapper of een data access object.
 



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.