OOP

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ervaren PHP Software Developer

Functieomschrijving Voor een toffe opdrachtgever in regio Breda zijn wij op zoek naar een medior PHP Developer met affiniteit met Laravel. Je komt te werken bij een uitdagende opdrachtgever met supergave klanten in een specifieke branche. Als PHP ontwikkelaar ben je samen met een vooruitstrevende team van 6 collega’s verantwoordelijk voor de ontwikkeling, beheer en het vernieuwen van informatiesystemen voor een specifieke branche. Je ondersteunt complexe uitdagingen van klanten. Vervolgens breng je hun wensen in kaart en vertaalt deze door naar maatwerk software. Affiniteit met Laravel is een pré. Om de klanten zo goed mogelijk te ondersteunen en snel in

Bekijk vacature »

.Net Ontwikkelaar

Dit ga je doen Het ontwerpen en ontwikkelen van software voor klanten; Het bijdragen van kennis en ervaring; Het integreren van van de software en afstemmen met klanten; Het functioneel testen van de ontwikkelde software. Hier ga je werken Voor onze relatie zijn wij momenteel op zoek naar een .Net Developer die wilt werken aan software die draait op machines wereldwijd. De organisatie produceert software voor applicaties die gebruikt worden in verschillende branches. De software wordt geleverd aan fabrikanten van verschillende robotica en machines. Als .Net ontwikkelaar ben je intern onderdeel van het team wat de applicatie omgevingen ontwikkeld en

Bekijk vacature »

Front end developer

Functie Qua type opdrachten is er echt een verscheidenheid aan afnemers, zo werken ze met grote multinationals, maar ook met startups. Zo kom je te werken in een gevarieerde omgeving en kan je ook schakelen tussen verschillende culturen. De projecten variëren van greenfield projecten tot langdurige ontwikkeltrajecten. Hier wordt alleen maar gewerkt met aan front end projecten. Daarom maakt het onze partner niet uit waar jij kennis van hebt, als je maar gedegen kennis hebt van Javascript frameworks, Unit testing en ook bekend bent met de scrum methodiek. Eisen Minimaal 4 jaar relevante werkervaring Kennen en ervaring van Javascript frameworks

Bekijk vacature »

Front-end Developer Angular

Dit ga je doen Jouw taken als Front End Developer bestaan uit: Het ontwikkelen van maatwerkoplossingen voor klanten; Het meedenken over nieuwe tools en technieken; Het begeleiden van junioren; Het meewerken aan diverse projecten; Het meedenken in UX/UI design. Hier ga je werken Als Front-End Developer ga je in een Scrum team aan de slag met de nieuwste digitale technologieën om klanten en overheden over de hele wereld te ondersteunen met het ondersteunen van hun software, veelal op het gebied van watermanagement en infra. Door middel van real-time data in combinatie met voorspellende analyses, AI, Deep Learning en Machine Learning

Bekijk vacature »

SQL beheerder / ontwikkelaar

Functie omschrijving Voor een klant in omgeving Tiel zijn wij op zoek naar een SQL beheerder met affiniteit met technisch applicatiebeheer. Je krijgt een fijne in-house werkplek waar je gaat werken aan diverse projecten. Dit bedrijf doet het beheer van databases voor een aantal bancaire klanten. Op dit momenten hebben zij ruim 1500 databases in beheer. Jouw werkzaamheden gaan er als volgt uit zien: Je gaat de development afdeling ondersteunen bij het ontwikkelen van MS SQL Scripts. Je zal zowel zelfstandig als in teamverband MS SQL databases installeren & beheren. Je monitort en onderzoekt incidenten en de achterliggende oorzaken. Je

Bekijk vacature »

Front end developer

Functie Jij als ervaren Front end developer bent een expert het gebied van Javascript en React. Je wordt onderdeel van een multidisciplinair team bestaande uit een PO, twee Front end developers, een DevOps/Back end developer, een UX/UI designer en een projectmanager. Verder is er iemand verantwoordelijk voor de HR en is de algemeen directeur nauw betrokken bij alle projecten. Dagelijks hou jij je bezig met de verschillende projecten die zijn opgenomen in de sprint. Daarnaast denk je mee over mogelijke oplossingen om de behoefte van de klant op de beste manier in te vullen. Verder spar jij intern met collega’s

Bekijk vacature »

Laravel / PHP developer

Functie omschrijving Wij zijn op zoek naar een Medior PHP / Laravel Developer voor een IT-consultancy in de omgeving van Hoofddorp! Ben jij op zoek naar een leuke nieuwe uitdaging binnen een veelzijdige werkomgeving? Lees dan snel verder! Binnen dit bedrijf werk je in een ontwikkelteam, waarin je zeer betrokken bent en meedenkt over softwareoplossingen. Binnen dit Team hou je je bezig met het aanpassen, verbeteren en vernieuwen van de logistieke oplossingen. Je zult je bezig houden met de volgende werkzaamheden: Je gaat aan de hand van de wensen van klanten software ontwikkelen; Je bent bij het gehele proces betrokken;

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 »

Senior PHP developer/ Software Architect

Functie Momenteel zijn ze op zoek naar een ervaren PHP developer die zichzelf graag bezighoudt met zaken als architectuur en de algehele verbetering van structuren en standaarden. Het is eigenlijk meer operationeel als uitvoerend omdat je bezig gaat met zaken als het verder uitrollen en verbeteren van testautomatisering, codereviews, tickets en de doorloop hiervan en architectuurkeuzes. Mocht je hiernaast ook wat DevOps kennis meenemen is dit mooi meegenomen! Vanwege het kleine team maar de wereldwijde impact die zij leveren is er veel focus op kwaliteit. In deze functie werk je aan één van hun belangrijkste applicaties. Hierin werk je nauw

Bekijk vacature »

Fullstack developer - medior

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en zou jij graag bij een platte maar informele organisatie willen werken? Voor een mooi softwarebedrijf in omgeving Ridderkerk zijn wij op zoek naar versterking voor op de afdeling Software Development! Als Fullstack developer wordt je bij dit bedrijf onderdeel van de volledige ontwikkeling van requirement tot oplevering! Werkzaamheden Jouw focus ligt op de front end en alles wat daarbij komt kijken. Je gaat ontwerpen, ontwikkelen, testen en valideren. Je zult voornamelijk werken met React.js en Typescript. Maar ook Javascript, HTML en CSS komen aanbod. Daarnaast zal je ook regelmatig met

Bekijk vacature »

Medior PHP Developer

Functie omschrijving We are looking for a dutch native speaker Wil jij als developer werken bij een interne organisatie en de eigen software verder helpen ontwikkelen? Lees dan snel verder! In deze functie ga je werken als PHP Developer en de interne software en applicaties verder ontwikkelen. In het kort houdt dit in: Je gaat de interne applicaties en software verder optimaliseren. Verder bouw je verschillende API's en koppelingen tussen systemen. Je gaat het CRM-systeem door middel van PHP verder ontwikkelen. Ook ga je collega's ondersteunen bij vragen over de software en applicaties. Bedrijfsprofiel Dit bedrijf is actief in het

Bekijk vacature »

Ervaren Full-Stack PHP Developer

Functieomschrijving Gezocht! Ervaren PHP Developer! Voor een organisatie in de regio Harderwijk zoeken wij een ervaren PHP Developer die het IT team van dit bedrijf gaat versterken. We zijn op zoek naar een enthousiaste en breed georiënteerde IT-er die het innovatieve bedrijf nog een stap verder kan brengen. Voor deze functie zoeken wij iemand die communicatief goed is en die zelfstandig problemen op kan lossen. Je werkt samen met een externe ontwikkelpartij en kunt hun dus uitdagen op het geleverde werk. Het schrijven van concepten aan de AI en hardware kant valt onder je verantwoordelijkheden. Het bedrijf noemt zichzelf een

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 »

SQL Developer

Functie omschrijving Altijd al willen werken bij een snelgroeiend bedrijf, actief in de logistieke sector? Dit is je kans! Ik ben op zoek naar een ervaren SQL Developer in de omgeving Tilburg. Dit bedrijf is gespecialiseerd in in de ontwikkeling van software en maatwerk oplossingen voor het automatiseren van logistieke processen. Klanten zijn o.a. BOL en andere grote distributiecentrums. Jouw taken worden vooral: Verantwoordelijk voor ontwikkelen van stored procedures, voor snelle afhandeling van data; Optimalisatie van de SQL query's en T-SQL query's; Jij gaat je bezig houden met ontwerpen, ontwikkelen en optimaliseren van de MS SQL Databases; In deze functie

Bekijk vacature »

Lead developer

Functie Als lead developer wordt jij verantwoordelijk voor een van onze development teams. Samen met de Software Architect bewaak jij de kwaliteit en uitvoering van onze complexe vraagstukken. Daarnaast ben jij verantwoordelijk voor het inschatten, designen en ontwikkelen van middelgrote tot grote veranderingen in de software. Ook coördineer jij het proces rondom complexe technische vraagstukken. Verder bestaat jouw takenpakket uit het volgende: – Het aansturen van jouw development team; – Het begeleiden van Junior Software Engineers; – Het maken van technische analyses m.b.t. nieuwe aanvragen en het tijdsbestek inschatten voor de uitvoering hiervan; – Het uitvoeren van de ontwikkeling van

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

08/05/2024 02:13:20
 
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.