OOP

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Java Developer

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

Bekijk vacature »

Front-end developer (Medior/Senior)

Functie Het front-end team bestaat momenteel uit 4 collega’s en is hard aan het groeien! Samen leveren jullie een essentiële bijdrage aan de applicaties die ze voor hun klanten realiseren. Je werkt in het front-end team samen met de back-end teams en product owners om te zorgen dat de applicaties een fijne gebruikerservaring opleveren. Jouw expertise zorgt ervoor dat de juiste keuzes gemaakt worden qua techniek en ontwerp, van back-end tot aan gebruiker. In samenspraak met je team bepalen jullie de beste keuze voor techniek. Ook is er altijd ruimte om nieuwe technieken te ontdekken. Eisen • Je hebt gedegen

Bekijk vacature »

Traineeship ICT regio Amsterdam/Utrecht

Wat ga je doen? Het traineeship begint met een fulltime maand cursussen en praktijkdagen, waarin je de basis van het IT-vak leert op de Shared Servicedesk (SSD). Daarnaast ga je meteen aan de slag voor je eerste certificering! (ITILv4). Je start in een groep met 4 tot 10 deelnemers, waarmee jij gedurende die maand optrekt en je kennis kunt delen. Na het voltooien van de eerste maand ga je direct voor een langere periode aan de slag bij één van onze klanten of blijf je intern bij ons op de Shared Servicedesk. Je bent het eerste aanspreekpunt van de eindgebruikers

Bekijk vacature »

C# .NET developer voor innovatieve applicaties gez

Bedrijfsomschrijving Deze werkgever houdt zich al ruim 20 jaar bezig met het ontwikkelen van innovatieve software en dat willen ze graag nog lang doorzetten. En dat merk je ook als je als .NET developer hier aan de slag gaat. De applicaties worden continu doorontwikkeld met altijd als uitgangspunt dat zowel de kwaliteit als het gebruikersgemak van hoog niveau is. Het bedrijf telt inmiddels ruim 25 medewerkers waarvan meer dan de helft op de development afdeling werken. Meer weten over deze werkgever? Mail naar [email protected] of bel 0657578548 Functieomschrijving Je komt te werken in een Scrum team met andere .NET developers

Bekijk vacature »

Developer Full Stack

Functie omschrijving Full Stack Developer gezocht! Wij zijn op zoek naar een Full Stack Developer voor een bedrijf in de regio Nijkerk. Je maakt in deze functie onderdeel uit van een groeiend team met een goede ambitie waarbij eenheid, betrokken en overtreffen de belangrijkste kernwaardes zijn. Het bedrijf werkt volgens de AGILE/SCRUM methode, wat je o.a. terug vindt in de tweewekelijkse sprints, retrospectives en een daily standup. Je takenpakket bestaat uit: Bijdragen aan het door ontwikkelen, onderhouden en optimaliseren van een Saas applicatie; Bijdragen aan de innovatie van het bedrijf en hun klanten; Het ontwikkelen op de laatste technologie van

Bekijk vacature »

Frontend Developer Vue Nuxt HBO Javascript

Samengevat: Deze werkgever levert elke dag betere digitale gebruikerservaringen. Ben jij geschikt als frontend Developer? Heb je ervaring met Vue en Nuxt? Vaste baan: Front-End Developer HBO €3.100 - €4.600 Zij bieden opdrachtgevers een complete dienstverlening op gebied van ontwerpen en ontwikkelen van websites, zoekmachine optimalisatie, online adverteren, content marketing en conversie verbetering. Zij werken met een eigen ontwikkeld CMS. Bij bij hun werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt met ons de meest nieuwe software. Wij blinken uit als het gaat om de inzet van technologie. Deze werkgever staat open voor elke nieuwe trend. Onze systemen zijn groot

Bekijk vacature »

Database Developer

Functieomschrijving Heb jij ongeveer 3 jaar ervaring als Database Developer met MS SQL of een vergelijkbare database? Wil jij werken voor een ambitieuze werkgever in regio Tilburg waar jij volledig de mogelijkheid krijgt jezelf te ontwikkelen? Lees dan snel verder! Hoe ziet jouw takenpakket eruit? Je gaat projecten gedurende het hele proces begeleiden. Je sluit aan bij afspraken met klanten om hun processen helder te krijgen. Vervolgens voer jij het project uit en zorgt dat dit zo goed mogelijk verloopt; Je werkt aan nieuwe softwareoplossingen die de logistieke processen verbeteren of vernieuwen; Je houdt je bezig met het ontwikkelen van

Bekijk vacature »

PHP Programmeur

Functieomschrijving Vanuit het hoofdkantoor in omgeving Breda, ontwikkel je als PHP programmeur niet alleen webapplicaties, maar ben je verder ook gefocust op het constant inspelen op nieuwe innovaties m.b.t software ontwikkeling. Naast het ontwikkelen van webapplicaties, bouwt deze toffe werkgever ook webshops en websites voor hun opdrachtgevers. Wat ga je doen? Het testen van ontwikkelde applicaties om te zorgen dat ze goed functioneren en voldoen aan de eisen van de klanten; Het ontwerpen en implementeren van webapplicaties met het Symfony framework; Het schrijven van een schone en efficiënte code volgens het Symfony framework; Onderhouden en updaten van bestaande applicaties die

Bekijk vacature »

Software Programmeur PHP

Functie Wij zijn op zoek naar een PHP programmeur voor een leuke opdrachtgever in omgeving Alblasserdam. Heb jij altijd al willen werken bij een bedrijf dat veilige netwerkverbindingen levert door middel van veilige oplossingen? Lees dan snel verder. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen C / C++ / PHP. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een projecten goed verlopen. Je gaat klanten ondersteunen op het gebied van geleverde software en webapplicaties. Tevens

Bekijk vacature »

C# .NET Ontwikkelaar ASP.NET

Samengevat: Deze werkgever is een inkooporganisatie. Ben jij een ervaren .Net ontwikkelaar? Heb je ervaring met .Net en C#? Vaste baan: C# .NET Developer .Net MBO HBO €3.100 - €4.300 Onze missie is: “Een essentiële bijdrage leveren aan het verlagen van de integrale kostprijs van de aangesloten groothandels, middels het bundelen van inkoopvolume en het creëren van synergie met en tussen de groothandels en leveranciers, met scherpe inkoopprijzen, goede handelscondities en gerichte dienstverlening als resultaat” Zij werken voor MKB klanten. Deze werkgever heeft veel verschillende projecten. Houd jij van afwisseling? Dan zit je bij hun goed! De branche van dit

Bekijk vacature »

Medior Front-end Developer

Bij Getnoticed doen wij wat we leuk vinden, websites bouwen en online marketing. Voor veel van onze klanten doen we dan ook allebei. Wel zo fijn om campagnes te draaien voor conversiegerichte websites die in eigen beheer zijn. In onze vestiging in Nederweert zit onze development afdeling en worden de websites gebouwd. Op dit moment zijn we op zoek naar jou: dé Medior Front-end Developer die net als wij, het hoofd boven het maaiveld durft uit te steken! In het kort Even een paar punten die omschrijven wat deze toffe baan inhoudt: Het uitwerken van designs tot functionele layouts Je

Bekijk vacature »

Developer Full Stack

Functie omschrijving Developer gezocht! Ben jij een enthousiaste developer die graag wil bijdragen aan ontwikkelingen binnen een mooie organisatie? Solliciteer dan snel. Wij zijn op zoek naar een Full Stack Developer uit de regio Nijkerk die gaat bijdragen aan het door ontwikkelen, onderhouden en optimaliseren van een SaaS applicatie. Je moet beschikken over beheersing van zowel de Nederlandse als Engelse taal aangezien je samen met de klant gaat werken. Bedrijfsprofiel Je komt te werken binnen een echt familiebedrijf dat al sinds 1925 actief is binnen de FMCG branche. Het bedrijf heeft 40 medewerkers en er heerst een platte communicatiestructuur waarbij

Bekijk vacature »

Back end developer Digital agency

Functie Heb jij altijd al eens bij een bedrijf willen werken waar jij géén nummertje bent, die alleen maar uitvoerend werk doet? Dan zou je hier perfect passen! Tuurlijk, je werkt aan projecten voor grote of kleine bedrijven… Het enige verschil hier is, jouw mening telt hier écht. Jouw inbreng wordt gewaardeerd, serieus genomen en gebruikt. En vergeet niet, je werkt niet alleen aan deze projecten. Er werken in totaal ruim 20 developers en designers, onderverdeeld over 3 development teams. Voornamelijk bestaande uit Medior en Senior developers, die samen voor een inspirerende en ambitieuze omgeving zorgen. Hun visie is namelijk

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 »

PHP Developer

Functie omschrijving Als PHP Developer ga jij aan de slag met uitdagende software projecten. Jij gaat in deze functie software applicaties ontwikkelen. Deze software projecten zijn heel divers, en deze organisatie maakt software, van A tot Z. Klanten kunnen in elke sector werkzaam zijn, van profit tot non-profit. Deze software bouw je vooral in PHP en specifiek Laravel. Dit framework kent dus geen geheimen voor jou. De software die jij gaat ontwikkelen is heel divers, van urenregistratiesystemen tot compleet geautomatiseerde tools. In deze veelzijdige functie ga jij je zeker niet vervelen, elke dag bestaat weer uit nieuwe uitdagingen. Bedrijfsprofiel Deze

Bekijk vacature »
- Rob -

- Rob -

14/02/2017 17:38:09
Quote Anchor link
Hallo!

Ik was weer aan het experimenteren met OOP maar ik stuiterde op een vraag waar ik niet uit kwam en het niet precies op Google kon vinden..

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
class Database {
  protected $_hostname = 'localhost';
  protected $_username = 'root';
  protected $_password = '';
  protected $_database = 'rob';


  public function connect() {
    $connection = mysqli_connect($this->_hostname, $this->_username, $this->_password, $this->_database);

    if(!$connection) {
      printf('Error met verbinding');
      exit();
    }
  }
}

class User extends Database {
  public $test = 'test';

  public function __construct() {
    $database = new Database;
    $database->connect()->real_escape_string($test);
  }
}

$database = new Database();
$database->connect();

$user = new User;


Hoe kan ik in de User class de variable $connection aanroepen voor bv. real escape string toe te passen?
Of zou ik hier in de Database class functions voor moeten aan maken of dergelijk?

Toevoeging op 14/02/2017 17:59:08:

UPDATE 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
class Database {
  protected $_hostname = 'localhost';
  protected $_username = 'root';
  protected $_password = '';
  protected $_database = 'rob';

  public $connection;

  public function connect() {
    $this->connection = mysqli_connect($this->_hostname, $this->_username, $this->_password, $this->_database);

    if(!$this->connection) {
      printf('Error met verbinding');
      exit();
    }
  }
}

class User extends Database {
  public $test = 'test';

  public function __construct() {
    $database = new Database;
    $con = $database->connection;
    $con->real_escape_string($test);
  }
}


error bij de code is:
Fatal error: Uncaught Error: Call to a member function real_escape_string() on null in C:\xampp\htdocs\index.php:28 Stack trace: #0 C:\xampp\htdocs\index.php(35): User->__construct() #1 {main} thrown in C:\xampp\htdocs\index.php on line 28
Gewijzigd op 14/02/2017 18:00:39 door - Rob -
 
PHP hulp

PHP hulp

27/05/2026 14:34:32
 
Ben van Velzen

Ben van Velzen

14/02/2017 18:14:12
Quote Anchor link
2 punten:
1. Waarom extendt de User class de Database class? Wat denk je hiermee te bereiken?
2. Je zegt nergens $database->connect() dus zal $database->connection nooit gevuld zijn, zoals je foutmelding aangeeft.
 
- Rob -

- Rob -

14/02/2017 18:43:08
Quote Anchor link
1. Dit is gewoon even om te oefenen
2. Waar moet ik connect() dan aangeven? Als ik dat toevoeg, dus zo: $database->connect(); geef hij nog steeds de zelfde error?

Heeft iemand misschien een voorbeeld van hoe ik dit moet doen?

Toevoeging op 14/02/2017 18:45:19:

Laat het voorbeeld maar ;-)

Ik heb nog even goed ernaar gekeken en kwam hierop uit:
$database = new Database;
$database->connect();
$database->connection->real_escape_string($this->test);
 
Ward van der Put
Moderator

Ward van der Put

14/02/2017 18:52:00
Quote Anchor link
Ik denk dat je inderdaad eens naar het data mapper pattern wilt kijken. Dan krijg je namelijk dit:

User <—> UserMapper <—> Database

Je moet véél abstracter leren denken als je de vergissing zoals class User extends Database begaat. De user is namelijk geen database. En de user vult de database ook niet aan. Klinkt raar, maar zo logisch is het wel.

In plaats daarvan krijg je:

• een user die een user is (en niet meer dan dat);
• een database om dingen in op te slaan en dingen uit te halen;
• een mapper die een user uit de database haalt of in de database opslaat.
 
- Rob -

- Rob -

14/02/2017 18:58:04
Quote Anchor link
aa, oké

Maar in de User class wil ik functions aan maken zoals givePromotion() moet dit dan ook via de mapper? Want ik had een paar oude bestanden een daar heette de Database class Object en werd het class User extends Object
Is dat dan wel goed gedaan? Of zit ik nu gewoon erg mis?
 
Ben van Velzen

Ben van Velzen

14/02/2017 19:34:37
Quote Anchor link
Het is niet logisch dat een gebruiker een database class extendt. Is een gebruiker een database? Nee.
Begin gewoon vanaf het begin, en ga niet zitten "oefenen" zonder dat je begrijpt wat je oefent. Er zijn boeken volgeschreven over OOP.
 
- Rob -

- Rob -

14/02/2017 19:49:37
Quote Anchor link
de class gebruiker is niet voor de gebruikers zelf, maar voor de functies voor de gebruikers en administrators voor de gebruikers zoals: Promoties geven, degraderen, etc.
 
Ben van Velzen

Ben van Velzen

14/02/2017 19:51:15
Quote Anchor link
Dan nog is het geen database. Vreemde opstelling, dat wel.
 
Ozzie PHP

Ozzie PHP

14/02/2017 20:09:13
Quote Anchor link
>> de class gebruiker is niet voor de gebruikers zelf, maar ...

Dan klopt de naamgeving van de class dus niet.
 
Bart V B

Bart V B

14/02/2017 20:23:50
Quote Anchor link
Ik denk dat je terug moet naar de tekentafel.
Kan een User promotie geven of een Administrator?

Je moet het zo zien:
Een auto is een object, die gebruikt benzine.
Maar is het benzinestation dan ook onderdeel van de auto?

Dus een database (het benzine station)
Is nooit een onderdeel can een User (auto).
 
Frank Nietbelangrijk

Frank Nietbelangrijk

15/02/2017 00:23:38
Quote Anchor link
Dit is een user class (wel een heel kleintje)

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
<?php
class User /* Ik weet enkel en alleen maar waar een user uit bestaat en van de rest van de wereld weet ik niets */
{
    private $name;
    private $email;

    /* dit noemen we ook wel een setter */
    public function setName($name)
    {

        $this->name = $name;
    }

    
    /* dit noemen we ook wel een getter */
    public function getName()
    {

        return $this->name;
    }


    /* hier nog een setter en getter voor $email */
    public function setEmail($email)
    {

        $this->email = $email;
    }

    
    public function getEmail()
    {

        return $this->email;
    }
}

?>


Hier een basis Mapper:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
class Mapper
{
    protected $db;

    /* de constructor */
    public function __construct($db)
    {

        $this->db = $db;
    }
}

?>


Dan een UserMapper die de eigenschappen van de basis Mapper overerft. (Handig als je later ook andere mappers wilt toevoegen)
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
<?php
class UserMapper extends Mapper
{
    public function __construct($db)
    {

        parent::__construct($db);
    }


    public function getUser($id)
    {

        $result = $this->db->query("SELECT * FROM users WHERE id=" . $id);
                
        if($result->num_rows == 1)
        {

            $row = $result->fetch_assoc();

            $user = new User();
            $user->setName($row['name']);
            $user->setEmail($row['email']);
                        
            return $user;
        }


        return null;
    }


    /* andere functies zoals getAllUsers(), createUser(), updateUser() en deleteUser() nog toe te voegen */
}
?>


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

/* eigenlijk zou je ook een database class moeten hebben maar gemakshalve gebruiken we hier de standaard php mysqli class even */
$db = new mysqli("localhost", "db_user", "db_pass", "db_name");

/* check connection */
if ($db->connect_errno) {
    printf("Connect failed: %s\n", $db->connect_error);
    exit();
}


// maak een instantie van UserMapper aan
$userMapper = new UserMapper($db);

// laad user met id 1 uit de database
$user = $userMapper->getUser(1);

// testje
echo $user->getEmail();

?>


Let op: Dit is slechts een voorbeeld en verre van compleet. Maar het geeft je hopelijk een kickstart...

Er zijn nog allerlei zaken die je later moet toevoegen om het echt lekker te laten werken.
Gewijzigd op 15/02/2017 00:29:26 door Frank Nietbelangrijk
 
Thomas van den Heuvel

Thomas van den Heuvel

16/02/2017 10:57:10
Quote Anchor link
Alternatief: een referentie van het database-object rechtstreeks meegeven bij de constructie van een user-object (als het gaat om de "huidige gebruiker", zie hieronder)?

Het hangt ook af wat je verstaat onder (een object van of objecten van) de User class: vertegenwoordigt een object van de User class de huidige (ingelogde) gebruiker van een systeem of een generiek object die een willekeurige (en niet zozeer de huidige) gebruiker uit het systeem representeert waar je bewerkingen op uit kunt voeren. In dit laatste geval is de aanpak met een Mapper weer geschikter.

Oftewel: @Rob, waar wil jij een User (object) voor gebruiken? Of wat voor idee steekt er achter jouw User class?
 
Ward van der Put
Moderator

Ward van der Put

16/02/2017 11:41:10
Quote Anchor link
Thomas van den Heuvel op 16/02/2017 10:57:10:
Alternatief: een referentie van het database-object rechtstreeks meegeven bij de constructie van een user-object (als het gaat om de "huidige gebruiker", zie hieronder)?

Ik heb er zelf nog wat lagen tussen zitten:

• class Connection extends PDO
• abstract class AbstractModel uses Connection
• abstract class AbstractDAO extends AbstractModel
• class UserMapper extends AbstractDAO
• class User

Het Data Access Object (DAO) kan de vier standaardqueries uitvoeren: INSERT, SELECT, UPDATE en DELETE. Zo kun je er met efficiënt weinig extra code zo veel mappers aan hangen als je wilt.
Gewijzigd op 16/02/2017 11:44:09 door Ward van der Put
 



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.