OOP gedachtengang

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

High level C++ QT Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Eindhoven Vacature ID: 13486 Introductie Would you like to be involved in every aspect of software development for our exceptional products, from specification and design to testing and integration? If you're passionate about software development and eager to apply your programming skills to create customer-focused deliverables, then this is the perfect chance for you to expand your expertise. You can become a member of our Machine Control department's data-driven development team, where you'll design and build software solutions that optimize machine productivity. As a senior software design engineer, you'll participate in all phases

Bekijk vacature »

Belastingdienst - Freelance Senior Cobol Applicati

Startdatum: 01.06.2023 Richttarief: €65,00 - €75,00 Duur van de opdracht: 7 maanden Uren per week: 36 Taal: Nederlands vereist! Gelieve in het Nederlands te solliciteren. Functieomschrijving: In de applicatie ETM zijn nu de inningsvoorzieningen voor ongeveer 25 aangifte- en aanslagmiddelen opgenomen. ETM is een extern aangeschafte service en het huidige contract met leverancier Oracle loopt af op 31-12-2022. Het programma uitfaseren ETM heeft als doel om vervanging te realiseren waarmee alle nu in gebruik zijnde ETM ondersteuning wordt overgenomen in nieuwe Inningsvoorzieningen om de continuïteit van de inningsprocessen te waarborgen. Eén van de inningsvoorzieningen die voor het einde van 31-12-2022

Bekijk vacature »

(Lead) PHP Software Developer

Functie omschrijving Voor een klein softwarebedrijf in Breda, zijn wij op zoek naar een PHP software developer met een aantal jaar werkervaring. Je krijgt een plek in een klein team met 2 andere software developers. Wil jij graag werken met de nieuwste technieken bij een bedrijf waar jij de lead gaat nemen in de verder ontwikkeling en modernisering van een eigen software pakket? Dan ben je hier aan het juiste adres! Jouw werkzaamheden gaan er als volgt uit zien: Je gaat aan de slag met de ontwikkeling en vernieuwing van het "in-house" ontwikkelde multimedia platform. Je neemt de lead in

Bekijk vacature »

Python Developer

Dit ga je doen Als Python Developer ben je verantwoordelijk voor: Het ontwikkelen van Stuurprogramma's in Python zodat er verbindingen kunnen worden gelegd tussen besturingssystemen en (AV) hardware; Het testen en debuggen van Stuurprorgamma's; Het communiceren met noodzakelijke partijen in gevallen waar extra technische details nodig zijn om een Stuurprogramma te ontwikkelen of problemen op te lossen; Het maken van de nodige technische documentatie (in het Engels); Het participeren in een Scrum/Agile omgeving. Hier ga je werken Deze internationale organisatie is wereldwijd een succesvol producent en leverancier van professionele AV hard- en software. Klanten gebruiken de producten o.a. voor het

Bekijk vacature »

Java Front-end Developer

Dit ga je doen Ontwikkelen van nieuwe functionaliteiten in Java met tools als Springboot, MS SQL Server (T-SQL) en JavaScript; Het onderhouden van de (web-)applicaties binnen een complexe omgeving; Werken aan de migratie van een monolithisch systeem naar een architectuur gebaseerd op Kubernetes; Code reviews met collega's en actieve kennisuitdelingsessies voeren; Het uitvoeren van unit- en systeemtests Experimenteren met nieuwe tools en technieken. Hier ga je werken Binnen deze organisatie kom je te werken op de afdeling die gegevens verzamelt vanuit het hele land. Denk hierbij aan vertrouwelijke persoonsgegevens. Het team verwerkt al deze data met als doel het waarborgen

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET Core developer wordt jij onderdeel van ons team met drie breed ontwikkelde software engineers en een flexibele schil met zes ervaren freelancers. Jij gaat mee in de visie van onze organisatie om als IoT partner in deze branche specifieke markt “het” platform te blijven innoveren en deze ook steeds slimmer te maken. Wij hopen dan ook zeker dit in de toekomst te kunnen realiseren met bijvoorbeeld Artificial Intelligence. De architectuur van ons platform is opgemaakt uit een deel eigen protocol, een interface laag en een laag welke de protocollen van derde partijen vertaald naar het eigen

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 »

Back end developer

Functie Jij als full stack ontwikkelaar komt te werken in een team bestaande uit 4 back end programmeurs, 2 vormgevers/ Front end developers en een online marketeer. Qua persoonlijkheden is het team erg gevarieerd van sportfanaten tot gameliefhebbers en Golfers. Een ding heeft iedereen hier gemeen; Passie voor goede code. In jouw rol zul je voor 90% van je tijd je bezig houden met het ontwikkelen van grote maatwerk applicaties. Daarnaast hebben wij op aanvraag ook wel eens een website of onderhoudsklusje, die opgepakt moet worden en hier ben jij ook niet vies van. De technische uitdaging momenteel is dat

Bekijk vacature »

Software Developer PHP

Functie omschrijving We are looking for a dutch native speaker Voor een opdrachtgever in de regio van Geldrop ben ik op zoek naar een Software Developer PHP. Jij krijgt een rol met veel verantwoordelijkheid in een groeiende organisatie. In deze functie werkt je voornamelijk remote en op een vast moment kom je met het team samen, om samen te werken en nieuwe doelen te bepalen. Wat ga je doen? Je wordt verantwoordelijk voor de interne applicatie; Je zorgt voor de doorontwikkeling van de applicatie: zowel back-end, front-end; De basis van het werk betreft front-end technieken; Periodiek bepaal je samen met

Bekijk vacature »

Software Ontwikkelaar

Functie omschrijving Voor een echt familiebedrijf in de omgeving van 's-Hertogenbosch ben ik op zoek naar een Software Developer. Jij gaat in de functie van Software Developer werken met C# en .NET framework Jij gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Daarnaast optimaliseer je de bestaande software. Oplossingen waar de klant echt iets aan heeft, jij krijgt er energie van op dit te realiseren. Je gaat werken in een Microsoft omgeving(ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Bedrijfsprofiel Deze organisatie is

Bekijk vacature »

Front end developer

Functie Het team bestaat uit User Experience designers, Data Scientists en Software Engineers met passie voor hun vak. De consultants en ontwikkelaars werken volgens de Design Thinking methode waarbij de eerste stappen van ontwerp en ontwikkeling zullen samenkomen in een proof of concept. Nadat is vastgesteld dat de oplossing voldoet aan de belangrijkste behoeftes worden producten of services gevalideerd door middel van korte iteraties. Hiermee zorgen ze ervoor dat het werk voldoet aan de technische vereisten en gebruikersbehoefte. Door het inzetten van de nieuwste technologieën die toekomstbestendig zijn weten ze klanten omver te blazen. Ook geven en organiseren ze veel

Bekijk vacature »

.Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Als developer bouw je in DevOps teams aan enterprise applicaties, nieuwe IOT, Chatbots of AI oplossingen. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren in dit vakgebied. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij vorig jaar Microsoft Partner of the year geworden.

Bekijk vacature »

Hands-on Solution Architect / Software Architect (

TenneT is hard groeiend om de onze ambities waar te kunnen maken. Zo nemen wij een leidende rol in het aanjagen van de energietransitie. Het werven van nieuw talent speelt daarin een cruciale rol. Wij zijn op zoek naar een gedreven Solution Architect / Software Architect op onze locatie Arnhem die hieraan wil bijdragen en misschien ben jij dat wel? Jouw bijdrage aan TenneT Je werkt samen met gedreven DevOps teams, bestaande uit frontend, backend en middleware developers, testers, UX-designers. Samen met de teams ben je continu op zoek naar de beste oplossingen voor onze klanten. Als Solution Architect onderzoek

Bekijk vacature »

Java Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Eindhoven Vacature ID: 12946 Introductie We are looking for a Java Developer! Our client is one of the most innovation companies located within the Netherlands. We provide high quality software in a high-tech and challenging market. Functieomschrijving The department is specialized in creating and developing high quality software for manufacturing automation in a high tech environment. We strive to provide our clients with high quality software and deliver state of the art solutions in a variety of ways. Creating software infrastructure using Java SE / EE Create applications to fine tune manufacturing processes

Bekijk vacature »

Functioneel Applicatiebeheerder

Wij van CNB zijn op zoek naar een leergierige Functioneel Applicatiebeheerder CNB is de grootste dienstverlener in de markt van bloembollen en vaste planten. In deze markt verricht CNB de volgende diensten: bemiddeling, veilen en het koelen en prepareren van bloembollen. Vanuit ons hoofdkantoor in Lisse werken bijna 100 collega’s dag in dag uit aan de bemiddeling van bloembollen. In Bovenkarspel vindt het koelen en prepareren van de bloembollen plaats. Wij zijn op zoek naar een enthousiaste Functioneel Applicatiebeheerder die naast een applicatie, ook sfeer kan bouwen! Jij: Vindt het leuk om binnen een klein IT-team aan de slag te

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

28/03/2024 12:59:01
 
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.