OOP gedachtengang

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

API Developer Red Hat Fuse

Bedrijfsomschrijving Deze organisatie is een toonaangevende speler in de vastgoedbranche en telt momenteel ruim 500 medewerkers. Met meer dan 150 applicaties staat er een complex applicatielandschap dat hoofdzakelijk op OpenShift, Azure en Linux draait en bestaat uit standaard- en maatwerkapplicaties. De maatwerk applicaties worden ontwikkeld door een inhouse development team. Het doel voor de komende periode is het verder vernieuwen, optimaliseren en automatiseren van het huidige applicatielandschap, waarbij gebruik wordt gemaakt van de nieuwste technieken. Zin om deze uitdaging als API Developer / Integratie specialist aan te gaan? Om de vernieuwing en optimalisatie kracht bij te zetten zijn ze bezig

Bekijk vacature »

Back-end Developer

Back-end Developer Opzet internetbureau, Santpoort-Zuid Opzet is een veelzijdig internetbureau, waar creatie en techniek hand in hand gaan. We ontwerpen en ontwikkelen voor diverse grote opdrachtgevers gebruiksvriendelijke sites, apps en applicaties. Opzet groeit. Daarom zijn we op zoek naar een ontwikkelaar die graag in teamverband werkt. Iemand die proactief meedenkt, de beste oplossingen zoekt en op de hoogte is van de nieuwste ontwikkelingen. We hebben per direct plek voor een: Back-end Developer Voor 32 - 40 uur per week Als Back-ender van Opzet ben je in staat om mooie oplossingen te bedenken en optimale code te schrijven voor sites en

Bekijk vacature »

Structured Text Developer PLC

Bedrijfsomschrijving De organisatie is opererend in de agrarische sector en wereldwijd toonaangevend en succesvol producent van machines die o.a. de veiligheid van het landbouwgewas garandeert. Deze machines worden aan klanten in meer de 25 verschillende landen geleverd. De volledige ontwikkeling van deze machines vindt plaats in het hoofdkantoor dat gelegen is in de regio van Meppel en ruim 175 medewerkers telt. De eindproducten van deze grote speler staan bekend om het grote innovatieve vermogen en de gecertificeerde kwaliteit. Een multidisciplinair scrum team van 6 developers is dagelijks bezig met het ontwikkelen van PLC software. Zij combineren hardware, software en techniek

Bekijk vacature »

Junior BI Developer

Bedrijfsomschrijving De organisatie waar je komt te werken als BI Developer is een grote internationale financiële instelling. Met vele vestigingen in Nederland zijn ze een belangrijke speler op de financiële markt. Jij zal hoofdzakelijk op het kantoor in Amsterdam werkzaam zijn, maar het kan ook voorkomen dat je af en toe naar een andere vestiging gaat. Het bedrijf telt ongeveer 5000 medewerkers waarvan ruim 150 ICT'ers. Het team waar je in komt te werken als (Junior) BI Developer is een ambitieus BI team dat zich bezighoudt met lokale en internationale uitdagingen. Zo zit een andere Junior BI Developer, 2 Medior

Bekijk vacature »

Software Engineer

Passie voor code, droom jij ’s nachts je bugs weg, is coderen je hobby en je werk. Dan ben jij de perfecte kandidaat voor onze e-ICT afdeling in Doetinchem! Wat ga je doen? Als Software Engineer ben je met jouw scrumteam van A tot Z betrokken bij het (door)ontwikkelen van de software. Je maakt daarbij gebruik van de nieuwste technieken waaronder o.a. Azure, .Net core, Docker en werkt aan mooie producten zoals RFID, microservices, Apps en een integratieplatform gebaseerd op Azure technologieën. Dit alles doe je volgens de Agile-methodiek en bent naast de dagelijkse stand-up betrokken bij de reviews, sprintplanning

Bekijk vacature »

IT-traineeship junior software developer

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 »

.NET Developer / nieuwe technieken / Nijmegen / &e

Bedrijfsomschrijving Deze ambitieuze en informele organisatie groeit ontzettend hard en daarom zoeken zij uitbreiding voor het development team. Dit zorgt ervoor dat jij als .NET ontwikkelaar op leuke en uitdagende maatwerk projecten komt te werken voor gave klanten in diverse branches. Allemaal om de user experience te overtreffen! Bij deze organisatie ligt er veel focus op de persoonlijke ontwikkeling en groei van hun medewerkers. Ze hebben ambities en daarom zoeken zij mensen die uit hetzelfde hout gesneden zijn. Mensen die graag in een informele setting werken waarbij aan alle randvoorwaarden wordt gedacht om optimaal te kunnen presteren. Je komt in

Bekijk vacature »

Azure DevOps Engineer

AzureDevOps Engineer Functiebeschrijving: Loop jij ook altijd met je hoofd in de Cloud? En weet jij met jouw kennis en ervaring innovatieve en betrouwbare Cloud omgevingen te realiseren? Dan zit je goed bij CGI! Wat ga je doen? Als AzureDevOps Engineer help je onze klanten om hun bestaande applicaties te moderniseren en deze te migreren en aan te sluiten op de private- of public Cloud. Samen met collega’s binnen het DevOps team geef je antwoord op complexe Cloud vraagstukken en ben je verantwoordelijk voor de geautomatiseerde releases van een veilige IT infrastructuur van onze klanten. Wat breng je mee? Je

Bekijk vacature »

Mobile Developer in Oost-Nederland (Android en/of

Bedrijfsomschrijving Een unieke kans voor Mobile Developers in Oost-Nederland. Deze prachtige organisatie is namelijk opzoek naar een Mobile Developer. Mobile Development en Ops Engineering gaan hand in hand bij deze organisatie dat een hoog verantwoordelijkheidsgevoel draagt. Als organisatie ontwikkelt zij dan ook veelal mobiele applicaties ter inspiratie en ondersteuning van belangrijke sectoren in Nederland. Met het technische team van gepassioneerde developers en engineers voeren ze dagelijks veelal diverse, inspirerende en complexe werkzaamheden uit. Door gebruik van innovatieve software en de nieuwste platformen binnen de sector is deze klant dan ook zeker als vooruitstrevend te betitelen waar zijn enorm veel waarde

Bekijk vacature »

.NET / Azure Developer

NOTE! DUTCH is mandatory! Voor onze klant zijn wij op zoek naar een (Medior OF Senior) .NET Developer. Dit ter uitbreiding van het team. Als .NET Developer zul je in een team van 4 Developers terecht komen en zul jij degene zijn die deze collega 's meeneemt in innovatieve & creatieve ideeën - jij bent dus de voorloper! Bedrijfsomschrijving NOTE! Applicants have to speak Dutch! Key-Account van Michael Page, Marktleider in de Benelux, Retailer Omschrijving NOTE! Applicants have to speak Dutch! Als .NET/Azure Developer zul je mee ontwikkelen aan het platform, zowel functioneel als technisch. Hiernaast breng je voldoende ervaring

Bekijk vacature »

Cobol Programmeur tijdelijk

Functieomschrijving Ben jij een Cobol programmeur en wil je een toffe opdracht uitvoeren bij een hele bekende overheidsinstelling in Den Haag? Heb je naast ontwikkelen ervaring met ontwerpen en verbeteren van Cobol omgevingen? Reageer dan snel! Ontwikkelen en onderhouden van de Cobol applicatie omgeving; Het ontwikkelen en bouwen van applicaties in een web-omgeving; Verbeteren van de efficiency en kwaliteit van de systemen; Achterhalen requirements; Je draagt zorg voor heldere systeemdocumentatie en instructies. Functie-eisen Een afgeronde HBO opleiding; Minimaal 3 - 5 jaar werkervaring met Cobol; Ervaring met IBS2000, IBM/Power7 en DDS zijn een pré; Je kan goed zelfstandig maar ook

Bekijk vacature »

Junior of medior .NET C# (web) ontwikkelaar, inhou

Ben je een junior of medior .NET C# ontwikkelaar en op zoek naar een nieuwe baan in Rotterdam? Een inhouse baan waar je werkt aan maatwerkapplicaties, direct contact hebt met klanten en samenwerkt met een leuk team van ontwikkelaars? Een baan waar je plezier haalt door de beste oplossing voor de klant te vinden? Wellicht dat deze organisatie dan iets voor jou is. Voor een software bedrijf in Rotterdam zijn we op zoek naar een .NET C# ontwikkelaar. Het bedrijf bestaat al meer dan 20 jaar en richt zich op het ontwikkelen van unieke software op maat (web, apps, desktop

Bekijk vacature »

Network Automation Engineer - Infrastructure Servi

Network Automation Engineer - Infrastructure Services PositionDescription Ben jij een ambitieuze Netwerk Engineer die de ontwikkelingen en innovaties op het gebied van Network & Automation op de voet volgt? Ben je een breed georiënteerde engineer en wil je je verdiepen in een specifieke technologie? Of wil je je expertise juist verbreden en certificeren in meerdere technieken en tools? Wij zoeken ter versterking van ons team zowel multi-skilled als specialistische engineers met passie voor hun vak! Bij ons krijg je de ruimte en vrijheid om in de praktijk jezelf verder te ontwikkelen op diverse projecten en aan je theoretische kennis te

Bekijk vacature »

.NET Developer Zorg-ICT

Wil jij met ChipSoft impact maken in de zorg met jouw technische kennis als Software Developer? En lijkt het jou uitdagend om innovatieve software te ontwikkelen met de laatste Microsoft-tools en technieken? Wat doe jij als Software Developer? Je bent verantwoordelijk voor het ontwerpen, ontwikkelen, ondersteunen en onderhouden van jouw eigen module. Dit gaat om complexe ICT-producten die feilloos moeten functioneren binnen de complexe omgeving van een zorgorganisatie. Je werkt zelfstandig of in teamverband. ChipSoft maakt gebruik van een zelf ontwikkeld multi-tier framework. Tijdens een interne opleiding brengen wij je snel bij hoe je binnen deze architectuur je ontwikkelkunsten kunt

Bekijk vacature »

P - ETL Developer

Looking for a freelance ETL Developer i am looking for a freelance ETL Developer for a project in financial services. * Start: 4 January * Duration: 12 months * Hours per week: 40 * Location: Amsterdam (mostly working from home) Your impact as ETL Developer As senior ETL developer you will be able to discuss and develop the best technical solution with the team, but also are capable to discuss what should and should not be done from forward looking (business) perspective. What doe you bring as ETL Developer * 8 year's working experience as ETL Developer / Specialist *

Bekijk vacature »

Pagina: « vorige 1 2 3 4 5 volgende »

Jasper DS

Jasper DS

06/06/2012 15:25:49
Quote Anchor link
Maar waarom staat deze regel daar nu in die functie?
 
PHP hulp

PHP hulp

22/01/2021 16:40:43
 
Jeroen VD

Jeroen VD

06/06/2012 15:29:50
Quote Anchor link
hetzelfde als met gewoon database gebruik:

bij procedurele queries moet je eerst fetchen, en komt er een array uit, of een object, of net wat je zelf wilt. je zult dan wel nog jouw benodigde gegevens uit die array of object moeten halen.

hetzelfde hier, $result is alleen nog maar gefetcht. en is een array. dus met $result['id'] haal je het id uit de array.
 
Jasper DS

Jasper DS

06/06/2012 15:30:36
Quote Anchor link
en waarom zou ik dat willen doen in die desbetreffende functie?
 
Jeroen VD

Jeroen VD

06/06/2012 15:36:31
Quote Anchor link
hmm das inderdaad gek ja. ik dacht dat je de regel niet begreep, maar ik snap zelf het nut eigenlijk ook niet, nee.
 
Jasper DS

Jasper DS

06/06/2012 15:42:11
Quote Anchor link
Ik begreep de syntax en de inhoud wel maar de bedoeling niet. ;)
 
Erwin H

Erwin H

06/06/2012 15:55:29
Quote Anchor link
Zo te zien komt het omdat het id niet wordt opgehaald uit de database:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT name, password, email, logged_in FROM users WHERE id = ?

Het id is namelijk al bekend en hoef je dus niet uit de database te halen, maar kan je direct in het object zetten. Anders zou je in het select ook 'id' moeten opnemen in de kolomnamen.
 
Wouter J

Wouter J

06/06/2012 16:29:34
Quote Anchor link
Erwin's uitleg klopt inderdaad. Ik heb altijd het gevoel alsof de manier die ik hier gebruik sneller is als het ophalen uit de DB en dus doe ik het altijd zo, maar kan er ook naast zitten.

Tevens, waarom de id niet in de constructor? Omdat een User niet verplicht een ID heeft. Als je een nieuwe user aanmaakt weet je nog geen ID, je hebt immers alleen het object. Pas als je het in de DB plaats met de UserMapper weet je het ID en die moet je dus apart kunnen zetten. (dat zie je ook automatisch gebeuren in UserMapper::create(). Daar zie je dat na het aanmaken van de User de User::setId() method wordt aangeroepen en de user het laatst aangemaakte ID krijgt (weet niet of die regel helemaal klopt in het script, maar gaat om het idee).

Quote:
En moet er telkens aangeduid worden welk type? Ik dacht dat dat in php niet hoefde in tegenstelling tot andere programmeertalen zoals java en C.

Dat klopt. Alleen ik hou altijd van controle. In een klasse wil ik zeker weten dat de waarde van de properties de waarde hebben die ik verwacht, vandaar dat ik ze allemaal typecast. Ik noem het maar een goede gewoonte.
 
Roel -

Roel -

06/06/2012 19:43:11
Quote Anchor link
Wouter, heb je misschien een voorbeeld in de praktijk van hoe je nu bijv. je User class verwerkt i.c.m. een form en validatie? Dat is mij nog niet helemaal duidelijk namelijk.
 
Wouter J

Wouter J

06/06/2012 19:50:31
Quote Anchor link
Het is eigenlijk gewoon heel simpel:
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
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $errors = array();

    if (!(isset($_POST['name'])) || ($_POST['name'] === '')) {
        $errors[] = 'Je bent vergeten een username in te vullen.';
    }

    if (!(isset($_POST['password'])) || ($_POST['password'] === '')) {
        $errors[] = 'Je bent vergeten een wachtwoord in te vullen.';
    }

    if (!(isset($_POST['email'])) || ($_POST['email'] === '')) {
        $errors[] = 'Je bent vergeten een email adres in te vullen';
    }


    if (count($errors) > 0) {
        // geen fouten, registreer user
        // maak een User object aan

        $user = new User($_POST['name'], $_POST['password'], $_POST['email']);
        $userMapper = new UserMapper();

        $user = $userMapper->create($user);

        $message = 'Hallo '.$user->getName().', welkom op deze website!';
    }
}

// ...
?>


Eventueel zou je het formulier validatie ook kunnen laten doen door een Form klasse, maar dat gaat wel erg ver voor dit topic (en om eerlijk te zijn heb ik dat zelf ook nog niet helemaal door...).
 
Roel -

Roel -

06/06/2012 20:03:26
Quote Anchor link
Je gebruikt dus geen try ... catch constructies? Het is me nu een stuk duidelijker.
Bedankt :-)
 
Wouter J

Wouter J

06/06/2012 22:46:24
Quote Anchor link
Niet voor foutafhandeling van dingen de de gebruiker verkeerd doet. Of nou, nu ik het zeg. Het kan natuurlijk ook:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
if (...) {
    $errors = array();
    if (!isset(...)) {
        $errors[] = 'Je moet nog een naam invullen';
    }

    // ...

    if (count($errors) > 0) {
        throw RunTimeException(implode(', ', $errors));
    }
}

?>


Maar het lijkt me handiger om RunTime fouten af te handelen met gewone normale error systemen, omdat je meerdere fouten tegelijkertijd wilt tonen.
 
Jasper DS

Jasper DS

07/06/2012 17:31:13
Quote Anchor link
Nu ben ik mij aan het afvragen hoe ik de login functie maak. Eerst en vooral ga ik niet opslaan in de database of mijn user ingelogged is aangezien dat in mijn applicatie niet belangrijk is.

Nu was ik aan het denken om aan mijn User class een functie login() toe te voegen en aan mijn UserMapper een functie getByNameAndPass(). In de login functie word de sessie dan aangemaakt en de getByNameAndPass() checkt of de user bestaat en populate() hem als die bestaat zodat ik kan inloggen.

Zit ik juist?
 
Wouter J

Wouter J

07/06/2012 17:52:47
Quote Anchor link
Heel strict genomen mag een User object zelf geen login uitvoeren en heb je daar een eigen klasse voor nodig. Maar ik denk dat het in dit geval wel goed zou zijn.
 
Jasper DS

Jasper DS

07/06/2012 19:06:44
Quote Anchor link
@Wouter, er loopt toch iets mis in mijn logica.

PRODUCELE 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
<?php
try
{
    $db = new PDO('mysql:host=localhost;dbname=visit_report','root','***');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Set Errorhandling to Exception
}    
catch(PDOException $e)
{

    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

    
$userMapper = new UserMapper($db);
$user = new User('jasper' , sha1('test'));
echo $userMapper->getByNameAndPass($user);
echo 'Id: ' . $user->getId();
echo '<br/> Name: ' . $user->getName();
echo '<br/> Password: ' .$user->getPassword();
?>


UserMapper->getByNameAndPass(User $user)
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
<?php
public function getByNameAndPass(User $user)
    {

        $stmt = $this->db->prepare("SELECT COUNT(gebruikersid) AS tel, gebruikersid, naam, wachtwoord FROM gebruikers WHERE naam = :name and wachtwoord = :password");

        $stmt->execute(array(
            ':name' => $user->getName(),
            ':password' => $user->getPassword()
        ));

    
        $result = $stmt->fetch(PDO::FETCH_ASSOC);
        
        if($result['tel'] < 1)
        {

            return 'Geen resultaat gevonden';
        }

        else
        {
            return $this->populate($result);
        }    
    }

?>


Zoals je ziet return mijn functie 'Geen resultaat gevonden' als de gegevens niet kloppen maar als het wel klopt returnt de functie de populate functie die op zijn beurt een volledig object return waardoor ik volgdende fout krijg.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Catchable fatal error: Object of class User could not be converted to string in C:\xampp\htdocs\testjes\User.class.php on line 150
 
Jurgen B

Jurgen B

07/06/2012 20:16:03
Quote Anchor link
Je probeert op regel 14 getByNameAndPass($user) te echoen, wat niet gaat omdat deze functie een User object teruggeeft. Het zou wel kunnen maar dan moet je een toString functie maken (dit kan bij Java, neem aan ook bij PHP).

Dus je wilt de return asignen aan een variabele welke je vervolgens kan echoen zoals je in de regels daaronder al deed. Echter echo je daar de gegevens van de $user die je zelf aanmaakt (jasper) ipv het resultaat van je query.
 
Wouter J

Wouter J

07/06/2012 20:18:02
Quote Anchor link
Jurgen, in PHP heb je de __toString magic method.

Jasper, ik zou het wat anders doen. Als er iets fout gaat return je false en anders de User object. Errors handel je met Exceptions af.
 
Jasper DS

Jasper DS

07/06/2012 22:37:40
Quote Anchor link
Dan veronderstel ik op deze manier:

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
<?php
public function getByNameAndPass(User $user)
    {

        $stmt = $this->db->prepare("SELECT COUNT(gebruikersid) AS tel, gebruikersid, naam, wachtwoord FROM gebruikers WHERE naam = :name and wachtwoord = :password");

        $stmt->execute(array(
            ':name' => $user->getName(),
            ':password' => $user->getPassword()
        ));

    
        $result = $stmt->fetch(PDO::FETCH_ASSOC);
        
        if($result['tel'] < 1)
        {

            return false; // Geen resultaat gevonden
        }
        else
        {
            return $this->populate($result);
        }    
    }

?>


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
<?php
/* Login testen */

try
{
    $db = new PDO('mysql:host=localhost;dbname=visit_report','root','jasper');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Set Errorhandling to Exception
}    
catch(PDOException $e)
{

    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

    
$userMapper = new UserMapper($db);
$user = new User('jasper' , sha1('test'));
if($userMapper->getByNameAndPass($user) == false)
{

    echo 'Uw gegevens zijn niet correct.';
}

echo 'Id: ' . $user->getId();
echo '<br/> Name: ' . $user->getName();
echo '<br/> Password: ' .$user->getPassword();
?>
 
Wouter J

Wouter J

07/06/2012 22:39:20
Quote Anchor link
Ja, alleen doe je nu niks met de geretourneerde user klasse. Sla deze op in $user.
 
Jasper DS

Jasper DS

11/06/2012 21:13:01
Quote Anchor link
Zo, nu heb ik eigenlijk een simpel "inlog systeempje" in de OOP vorm. :-)
Dan nu het degelijk opslaan van mijn classes. Ik heb voorlopig 2 classes. De User en de Usermapper. Zet ik deze in 2 apparte bestanden of wat doe ik daarmee? Moet ik dan ook telkens al mijn classes inladen of laad ik deze in in één bestand dat ik nadien inlaad in mijn andere pagina's?
 
Wouter J

Wouter J

11/06/2012 21:54:18
Quote Anchor link
Jasper, je plaats elk bestand in een aparte bestand en ook in aparte mappen op categorie. Dus zeg maar zoiets:
/project/
/project/lib/User/User.php
/project/lib/User/UserMapper.php
/project/lib/Post/Article.php
/project/lib/Post/PostMapper.php
/project/lib/Post/PostFactory.php
/project/lib/Post/BlogPost.php

Dan kun je mooi en makkelijk gaan werken met autoloaders. Zorg dat je klassennamen de PSR-0 standaard volgen en je kunt heel simpel hun spl autoloader gebruiken. Dat werkt dan ong. zo:
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
<?php
function my_spl_autoloader($class)
{

    // functie wordt elke keer bij het aanmaken van
    // een onbekende klasse aangeroepen, zodat je de
    // klasse kunt laden

    // do some fancy stuff

    // laad het bestand

    require __DIR__.DIRECTORY_SEPARATOR.$class;
}


// registreer de autoloader
spl_autoload_register('my_sql_autoloader');
?>
 

Pagina: « vorige 1 2 3 4 5 volgende »



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.