[OOP] Telefoonboek

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Front-End Developer

Als Front-End Developer bij Coolblue verbeter je de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Wat doe je als Front-End Developer bij Coolblue? Als Front-end Developer werk je aan de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Je vindt het leuk om samen te werken met de UX designer om stories op te pakken. Je krijgt energie van het bedenken van creatieve oplossingen en presenteert dit graag binnen het team. Daarnaast ben je trots op je werk en verwelkomt alle feedback. Ook Front-end Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te

Bekijk vacature »

Senior java ontwikkelaar integratie

Functieomschrijving Voor de gemeente Rotterdam zijn wij op zoek naar een senior java ontwikkelaar integratie. Taken Binnen een zelfsturend Scrumteam voer je geheel zelfstanding je opdrachten uit en levert het eindresultaat op aan het Integratieteam. Jij voelt je net als alle teamleden verantwoordelijk voor alle aspecten, vanaf de vraag tot en met de oplevering in productie. Je bent kritisch, je helpt de klant om zijn wensen helder te krijgen, je schrijft zelfstandig clean code die van hoge kwaliteit is, met bijbehorende unit- en integratietesten, je ondersteunt zo nodig bij deployments naar productie. Het Integratieteam bouwt componenten (Endpoints) op de ESB.

Bekijk vacature »

PHP Developer (junior functie)

Functie omschrijving Ben jij een starter en wil je werken bij een jong en leuk bedrijf? Lees dan verder! Wij zijn op zoek naar een PHP Developer binnen een junior functie. Binnen dit bedrijf gaat het om persoonlijke aandacht en ontwikkeling! Je komt te werken voor een leuk communicatiebureau die alles op het gebied van online en offline communicatie doet. Dit doen zij voor verschillende branches, waardoor je aan diverse soorten projecten mag werken, dit maakt deze baan erg leuk! Daarbij werk je aan een door hun zelf ontwikkeld framework welke goed leesbaar is. Je maakt voor bedrijven op maat

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 »

Airport Developer / System engineer

De functie Als onze nieuwe Airport Developer / System Engineer is je doel om uit nieuwbouw- en onderhoudsprojecten maximale waarde te creëren voor Schiphol Group en haar stakeholders. Vanuit je visie en expertise, maar ook (technologische) ontwikkelingen, wetgeving en beleid vertaal je klantwensen naar een gedegen programma van eisen. In de planontwikkelingsfase werk je nauw samen met Plan Ontwikkelaars om je kennis in te brengen ten behoeve van de kwaliteit van het investeringsvoorstel. Je overlegt met diverse partijen, stelt de vraag achter de vraag en verbindt zo de belangen van de luchthaven, proceseigenaar en asseteigenaar om tot een gedragen ontwikkelopgave

Bekijk vacature »

Fullstack developer

Functie omschrijving We are looking for a dutch native speaker Wil jij werken als Senior Developer en werken aan een applicatie die duizenden marketingcampagnes automatisch aanstuurt? Dit is je kans! Kom werken voor onze opdrachtgever en in deze rol zul je veel vrijheid en verantwoordelijkheid krijgen om gezamenlijk de applicatie naar een hoger plan te tillen. Wat ga je verder doen: Optimaliseren, beheren en uitbreiden van onze applicatie; Het bouwen van aansluitingen op de systemen van partners middels API’s; Meedenken over de technische/ontwikkel-standaarden; Proactief verbeterpunten voorstellen. Bedrijfsprofiel Het is een organisatie die met een team van verschillende developers én marketeers

Bekijk vacature »

Junior .NET Developer

Dit ga je doen Als junior .NET Developer lever je met jouw oplossingen direct een bijdrage aan de bedrijfsprocessen van de klanten. Werkzaamheden waar jij je zoal mee bezig houdt zijn; Het ontwikkelen, onderhouden en optimaliseren van de draaiende platforms van de klanten; Softwareontwikkeling middels C#, .NET; Klantcontact om de wensen te bespreken en uit te werken; Optimaliseren van de (huidige) bedrijfsprocessen; De IT-afdeling bestaat uit 30 personen verdeeld over 3 teams. Het team waar je in terecht komt bestaat uit ongeveer tien man. Het is een team wat bestaat uit betrokken collega’s, waar iedereen bereidt is om elkaar te

Bekijk vacature »

SQL database developer

Functie omschrijving Voor een softwarebedrijf gespecialiseerd in het ontwikkelen van logistieke software in omgeving Tilburg zijn wij op zoek naar een ervaren SQL database developer. Je gaat werken aan uitdagende, complexe projecten. Iedere klant/project betekent maatwerk in de database. Jouw werkzaamheden zullen er als volgt uit zien: Je bent verantwoordelijk voor de gehele ontwikkelstraat. Van architectuur tot ontwikkeling Je gaat je bezig houden met het ontwerpen en ontwikkelen van MS SQL server databases. Je gebruikt hiervoor T-SQL als programmeer laag. Je begeleidt als lead developer de projecten bij klanten van A – Z. Je sluit aan bij meetings met klanten,

Bekijk vacature »

Front-end Developer (HTML/CSS, Angular/React/Vue,

Functie Je zal aan de slag gaan in een klein, hecht team met front-end development experts die de ambitie delen mooi werk te leveren. Samen met hen zal je werken aan het gebruiksvriendelijk en interactief maken van complexe webapplicaties, websites en mobile apps. Je levert klanten wat ze nodig hebben terwijl je actief aan jezelf blijft werken met de ondersteuning vanuit je werkplek. Talen als Javascript programmeer jij vloeiend en je hebt kennis van frameworks als React en Angular. Je zou je het liefst nog veel meer ontwikkelen in verschillende front-end talen. Deze kennis deel je graag met je collega’s,

Bekijk vacature »

Developer (One Data)

Do you have experience with managing IT Teams in a service delivery organization? Are you keen to bring the team and our platform to a higher level? Then Nutreco has a very interesting role for you! As a One Data developer you are responsible for the management, running and functional use of our integration landscape and processes within Nutreco. Nutreco is using at this time BizTalk 2016, and Apigee for its API management, to be replaced by Azure Integration Services as of 2023. You will be part of a virtual teams of 11 people (own and outsourced) working in an

Bekijk vacature »

Traineeship Full Stack .NET Developer

Dit ga je doen Start op 7 augustus 2023 bij de Experis Academy en ontwikkel jezelf tot een gewilde Full Stack .NET Developer. Maar hoe ziet het traineeship eruit en wat kun je verwachten? Periode 1 De eerste 3 maanden volg je fulltime, vanuit huis, een op maat gemaakte training in teamverband. Je leert belangrijke theorie en krijgt kennis van de benodigde vaardigheden en competenties die nodig zijn om de IT-arbeidsmarkt te betreden. Zowel zelfstandig als in teamverband voer je praktijkopdrachten op het gebied van front- en backend development uit. Wat er per week op het programma staat kun je

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 »

Als PHP developer bijdragen aan beter onderwijs?

Functie Momenteel zijn ze op zoek naar een PHP developer die mee gaat werken aan de (door)ontwikkeling van de producten en zo helpt aan de uitvoering van hun ontwikkelprojecten. Je komt te werken binnen hun development team bestaande uit 6 ontwikkelaars. Ze staan zowel open voor meer junior als medior/senior developers. Je kunt snel veel verantwoordelijkheid krijgen en doorgroeien binnen het bedrijf. Bovendien ben je betrokken bij het bepalen van de product roadmap en de inbreng van (nieuwe) technologieën. De applicaties waaraan je werk worden gebruikt op onderwijsinstellingen door heel Nederland. De tech-stack bestaat voornamelijk uit Laravel (PHP), Vue.js en

Bekijk vacature »

Low-code developer

Functie omschrijving Heb jij altijd al een training willen volgen in het buitenland? Voor een leuke opdrachtgever in omgeving Alphen ad Rijn zijn wij op zoek naar kandidaten die aan de slag willen als Low Code Developer! Beschik jij over HBO/WO nivo, bij voorkeur Informatica, maar een ander technische opleiding zoals bijv. wiskunde, natuurkunde is ook goed. Heb jij aantoonbare affiniteit met IT en ben jij gedreven, enthousiast, communicatief vaardig en klantgericht? Lees dan snel verder! Je wordt getraind tot een volwaardig Low Code Developer, het traject ziet er als volgt uit: Start 1e week januari, opleiding van 3 weken

Bekijk vacature »

Java Developer (Training And Simulation)

Wat jij doet Je zou onze Java Developer zijn en nauw samenwerken met je Product Owner, Software System Engineer, Scrum Master en andere Developers. Samen draag je bij aan een multidisciplinair en zelf organiserend Agile team. De rol is zeer afwisselend en bestaat uit, maar is zeker niet beperkt tot: de-risk en prototype onbewezen simulatietechnologieën; simulatiekaders ontwikkelen voor gebruik door andere teams; je bent goed in het begrijpen van ingewikkelde ideeën; heeft de mogelijkheid om nauw samen te werken met grote internationale klanten, leveranciers en overheden om onze oplossingen, vastleggingsvereisten, enz. te definiëren en te presenteren. Ben jij het? Wij

Bekijk vacature »
Tim

Tim

03/02/2009 19:18:00
Quote Anchor link
Heey mensen,


Ik ben weer een beetje aan het proberen met OOP en vroeg me af of het volgende goed was? Opmerkingen en (opbouwende) kritiek zijn altijd welkom!

index.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
<?php
require('class_Database.php');
require('class_Telefoonboek.php');
require('class_TelefoonboekRecord.php');

$telefoonboek = new Telefoonboek;
$message = $telefoonboek->initiate();
$records = $telefoonboek->getAllRecords();
?>


<HTML>

<HEAD>

<TITLE>Telefoonboek</TITLE>

</HEAD>

<BODY>

<?php

if(!empty($message)){
    echo $message . '<br><br>';
}



if(!$records){
    echo 'Er zijn geen nummers gevonden.';
}
else{
    ?>

    
    <TABLE>
     <TR>
      <TD STYLE='width: 200px; font-weight: bold;'>Name</TD>
      <TD STYLE='width: 200px; font-weight: bold;'>Number</TD>
     </TR>
    
     <?php
    
     for($i = 0; $i < count($records); $i++){
         echo '<TR>';
          echo '<TD>' . $records[$i]->getName() . '</TD>';
          echo '<TD>' . $records[$i]->getNumber() . '</TD>';
         echo '</TR>';
     }

    
     ?>

    
    </TABLE>
    
    <?php
}
?>


<br><br><br><br>

<FORM ACTION='' METHOD='POST'>
 <TABLE>
  <TR>
   <TD>Name:</TD>
   <TD><INPUT TYPE='text' NAME='name'></TD>
  </TR>
  <TR>
   <TD>Number:</TD>
   <TD><INPUT TYPE='text' NAME='number'></TD>
  </TR>
  <TR>
   <TD COLSPAN='2'><br><INPUT TYPE='submit' NAME='submit' VALUE='Voeg Toe'></TD>
  </TR>
 </TABLE>
</FORM>

</BODY>

</HTML>


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

class Telefoonboek {
    public function initiate() {
        if($_SERVER['REQUEST_METHOD'] == 'POST'){
            $check = $this->checkValues();
            
            if($check){
                if($this->addRecord()){
                    return 'Het nummer is succesvol toegevoegd.';
                }
else{
                    return 'Het nummer kon niet worden toegevoegd.';
                }
            }
else{
                return $check;
            }
        }
    }

    
    protected function checkValues() {
        $error = '';
        
        if(strlen($_POST['name']) < 4 || strlen($_POST['number'] > 200)){
            $error .= 'Controleer de ingevoerde naam.<br>';
        }

        
        if(!is_numeric($_POST['number']) || strlen($_POST['number']) < 4 || strlen($_POST['number']) > 25){
            $error .= 'Controleer het ingevoerde telefoonnummer.<br>';
        }

        
        if(!empty($error)){
            return $error;
        }

        
        return true;
    }

    
    protected function addRecord(){
        $database = new Database;
        $database->connect();
        
        $sql = 'INSERT INTO telefoonboek SET name="' . mysql_real_escape_string($_POST['name']) . '", number="' . mysql_real_escape_string($_POST['number']) . '"';
        $result = $database->makeRow($sql);
        
        $database->disconnect();
        
        if(!$result){
            return false;
        }

        
        return true;
    }

    
    public function getAllRecords() {
        $database = new Database;
        $database->connect();
        
        $sql = 'SELECT * FROM telefoonboek';
        $count = $database->countRows($sql);
        
        if($count > 0){
            $rows = $database->getRows($sql);
            
            for($i = 0; $i < count($rows); $i++){
                $record = new TelefoonboekRecord;
                $record->setId($rows[$i]['id']);
                $record->setName($rows[$i]['name']);
                $record->setNumber($rows[$i]['number']);
                
                $records[] = $record;
            }

            
            $database->disconnect();
            
            return $records;
        }
else{
            $database->disconnect();
            
            return false;
        }
    }

    
    public function getRecord($id) {
        $database = new Database;
        $database->connect();
        
        $sql = 'SELECT * FROM telefoonboek WHERE id="' . mysql_real_escape_string($id) . '"';
        $count = $database->countRows($sql);
        
        if($count == 1){
            $row = $database->getRow($sql);
            
            $record = new TelefoonboekRecord;
            $record->setId($row['id']);
            $record->setName($row['name']);
            $record->setNumber($row['number']);
            
            $database->disconnect();
            
            return $record;
        }
else{
            $database->disconnect();
            
            return false;
        }
    }
}


?>


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

class TelefoonboekRecord {
    protected $id, $name, $number;
    
    function
__contruct() {
        $this->id = 0;
        $this->name = '';
        $this->number = '';
    }

    
    public function setId($id) {
        $this->id = $id;
    }

    
    public function getId() {
        return $this->id;
    }

    
    public function setName($name) {
        $this->name = $name;
    }

    
    public function getName() {
        return $this->name;
    }

    
    public function setNumber($number) {
        $this->number = $number;
    }

    
    public function getNumber() {
        return $this->number;
    }
}


?>


Groetjes!
Gewijzigd op 01/01/1970 01:00:00 door Tim
 
PHP hulp

PHP hulp

26/04/2024 21:32:29
 
PHP erik

PHP erik

03/02/2009 20:11:00
Quote Anchor link
1. Je ziet hier al direct dat iets niet klopt:
class Telefoonboek extends Database

Telefoonboek is namelijk geen database, maar een tabel. Dus deze extend klopt niet.

2. Je TelefoonboekRecord lijkt er al meer op, al is dat uiteraard gewoon een simpele wrapper

3. Alle $_POST-handelingen horen absoluut niet thuis in deze class. $_POST is iets specifieks van je applicatie, namelijk validatie, en hoort niet gemengd te worden met databasehandelingen. Je instantiate(), checkValues() en addRecord() kunnen dus echt niet op die manier.

Tip: bij addRecord() kun je een TelefoonboekRecord-object mee laten geven. Dus addRecord(TelefoonboekRecord $record). Dan zie je al dat je logisch bezig bent, want je definieert de waarden elders. Er zijn echter honderd manieren om databaseobjecten te maken. Ik zou zeggen Google ook eens op DAO (data access object).

4. Je getAllRecords() zou je statisch kunnen maken. Hij is namelijk niet echt afhankelijk van properties binnen je object en manipuleert je object ook niet. Maar dan moet je wel kijken hoe je je connectie meegeeft. Maar als je punt 1 hierboven leest dan zie je ook dat je eigenlijk niet moet extenden van Database.


Hier een voorbeeldje van in welke richting ik meer zou kijken:

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
abstract class DatabaseTable_Abstract
{
    protected $_db;

    public function __construct(Database $database)
    {

            $this->_db = $database;
    }
}


class Telefoonboek extends DatabaseTable_Abstract
{
     public function addRecord(TelefoonboekRecord $record)
     {

           // insert $record-object
     }
}

?>


Ik zou zelf een nog andere opzet gebruiken maar die gaat een beetje langs jouw aanpak heen terwijl jouw aanpak niet per se slechter is.

Ik zou in de TelefoonboekRecord-class al een insert-optie maken en het Telefoonboek-object houden om bijv. meerdere records op te vragen.

Daarnaast zou ik het database-object ophalen met een statische functie uit bijvoorbeeld een registry. Zoiets als $this->_db = Registry::get('db'); Dan hoef je dit niet steeds mee te geven. Je kunt dan ook makkelijker statische functies gebruiken.

Voor alle $_POST-dingen zul je aparte validatieobjecten "moeten" maken. Deze objecten zouden wel gebruik kunnen maken van bijvoorbeeld TelefoonboekRecord om bijvoorbeeld te zien welke velden worden verwacht.


Oke veel commentaar maar ik vind het zeker niet slecht.


Edit:
Oh, oh, en errors return je niet in een lijst, daar gooi je Exceptions voor. Bij validatie heb je echter goed gezien dat je misschien een errorlijst wil. Maar ik zou niet ervoor kiezen om één functie óf true óf een errorlist te laten returnen. Ik zou eerder een ->isValid() method maken, en bij false, een getErrors() method. Maar dan dus wel ergens in een validatieobject. Zie ook voor de grap eens een pagina uit een tutorial die ik ooit heb geschreven: http://phphulp.nl/php/tutorials/8/632/1667/
Gewijzigd op 01/01/1970 01:00:00 door PHP erik
 
Tim

Tim

03/02/2009 20:19:00
Quote Anchor link
Bedankt voor je tips!

Dat extenden van de database was een foutje uit een eerdere versie. Zoals je verder ziet in de methods gebruikte ik deze extend in principe niet. Hij is eruit en ik had hem er al 'uitgedacht'.

De rest zal ik meenemen in een volgende versie!
 
PHP erik

PHP erik

03/02/2009 20:27:00
Quote Anchor link
Je bent goed bezig. Misschien nog iets meer het gevoel krijgen van wat je object moet voorstellen en wat je er in implementeert. Je maakt het jezelf al moeilijk als je een object "Telefoonboek" noemt. Dit kan namelijk echt vanalles zijn. In werkelijkheid is het geen Telefoonboek, maar een representatie van je telefoonboek-databasetabel. Stel je had 'm TelefoonboekTabel genoemd (misschien geen mooie naam), dan had je wel sneller voor jezelf bedacht dat je niet $_POST-waarden gaat valideren binnen je Tabel-object. Een tabel heeft namelijk eigenlijk maar 4 handelingen: select, update, insert, delete. Er zit geen validate()-functie in. Dat zou je uitspreken als Tabel::validate(). Dat impliceert direct al dat je een tabel aan het valideren bent, en dat doe je niet. Je valideert data van buitenaf.

Bekijk ook eens wat frameworks zoals Zend, symfony en CakePHP om te zien wat voor standaardobjecten zij definiëren. Het is vaak al leerzaam te weten waar men aparte objecten voor gebruikt.

Good luck.

edit: overigens kun je dit object absoluut gewoon Telefoonboek noemen hoor, als je maar altijd in je achterhoofd houdt wat "Telefoonboek" dan precies betekent.
Gewijzigd op 01/01/1970 01:00:00 door PHP erik
 
Tim

Tim

03/02/2009 20:40:00
Quote Anchor link
Thanks, ik ga er mee aan de slag!
 



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.