OOP gedachtengang

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Medior PHP developer

Ben jij nu of op korte termijn beschikbaar voor een nieuwe freelance PHP klus? Neem dan contact met mij op. Ik zoek voor een klant naar een freelance PHP back-end ontwikkelaar. Wensen vanuit klant: - Ervaren back-end PHP ontwikkelaar - SQL kennis - Ervaring met webservices oriented architectuur Algemene informatie: - Start: voorkeur per direct - Uren: bij voorkeur 40 uur - Locatie kantoor: Amersfoort - Remote: momenteel volledig remote, zal later ook deels mogelijk blijven. Heb jij interesse en wil je meer weten over deze klant? Laat een reactie achter met jouw meest recente cv + uurtarief. Alvast bedankt!

Bekijk vacature »

Java Developer / Webservices / Overheid

Bedrijfsomschrijving De organisatie waar je komt te werken is een semi-overheidsinstelling die zorgt voor een goede samenwerking tussen verschillende overheidsinstanties. Het is een familiaire club die gaat voor kwaliteit en langdurige relaties. Het bedrijf is gevestigd in hartje Utrecht met het Centraal Station op loopafstand en een parkeergarage naast het pand. Bij deze stabiele organisatie gaat men uit van kwaliteit hoogwaardige softwarediensten. Je zal hier als Java Ontwikkelaar geen projecten tegenkomen waar je uit commercieel oogpunt jouw werk zo snel mogelijk af moet leveren. Uiteraard zal je hier wel het beste uit jezelf moeten halen, maar hierbij ligt het zwaartepunt

Bekijk vacature »

Java ontwikkelaars gezocht met interesse in Securi

Functieomschrijving Als ontwikkelaar help je het bedrijf groeien en bouw je applicaties en plugins binnen Java. Het grootste werk zal je hebben aan het doorontwikkelen van de door hun op de markt gebrachte software-oplossing. Deze oplossing is een doordachte en veelgebruikte tool voor het veilig versturen van (zakelijke) bestanden. Binnen je functie zal je veel vrijheid en verantwoordelijkheid gaan ervaren om je werk zo goed mogelijk uit te voeren. Van jou wordt verwacht dat je je op technisch gebied constant door wilt blijven ontwikkelen. Functie-eisen - HBO/WO opleiding afgerond. - Ervaring met Java; - Een pré is kennis van Spring,

Bekijk vacature »

Android Developer

Als Mobile Developer zorg jij voor een ultieme klantervaring voor het zoeken en kopen van producten bij Coolblue via de app. Hoe word ik Android Developer bij Coolblue? Je bent succesvol in het schrijven van Kotlin of Java code en werkt nauw samen met je collega’s, bijvoorbeeld in de vorm van pair programming, om de kwaliteit te waarborgen. Daarbij denk je na over technische keuzes zoals architectuur, tools en processen. Verder houd je de prestaties van de app in de gaten en analyseer je met het team hoe je dit kunt verbeteren. Het werken volgens Scrum methode is jouw niet

Bekijk vacature »

Medior Angular developer

Voor een klant in regio Amersfoort op zoek naar een medior front-end developer met Angular ervaring. Het gaat om het doorontwikkeling van een aantal high traffic websites, maar ook om de ontwikkeling van een nieuwe buitenlandse website die aangesloten wordt op het bestaande platform. Gevraagde vaardigheden: Angular 8 ervaring Ervaring met NGRXRedux Feeling voor User Experience Scrum ervaring is pré De start van dit project is per direct. Mocht je nog een opzegtermijn hebben is dit bespreekbaar. Het project zal 40 uur per week zijn en tot einde jaar is het remote. Klinkt dit als iets voor jou? Dan kom

Bekijk vacature »

ASP.NET CORE developer Fullstack / Intern

Bedrijfsomschrijving Mijn klant houdt zich bezig met alleen maar maatwerk software. Door de flexibiliteit van de developers bedienen ze bijna elke markt; van start-ups tot aan de grotere internationaal georiënteerde bedrijven. Bepaalde applicaties zijn standaard geworden en worden als totaalpakket aan de klant aangeboden. Andere applicaties worden maandelijks onder de loep genomen. Kortom: genoeg uitdaging voor een .NET Developer. Je komt te werken in een gezellig team van ongeveer 20 mensen met een platte structuur. Er wordt veel voor het personeel geregeld en regelmatig ga je met het team op pad. Je collega's zijn IT minded mensen. Het gaat hier

Bekijk vacature »

Senior Product Software Developer (Java)

We are looking for an experienced Java Developer to join our multidisciplinary, international (DevOps) team to create top-notch online services, driven by state-of-the-art software for our professional customers worldwide. As a Wolters Kluwer Software Engineer you will create our digital solutions by working with the latest technologies. You are a key member of a geographically distributed development team working on various digital platforms and tools. The role As the Java Developer you will work in a multidisciplinary, international team (DevOps). The primary focus of the team is to develop the Content Management System (CMS) on the basis of Continuous Integration

Bekijk vacature »

Lead .Net Developer/Architect/ Telecom/ Salary: 6.

Bedrijfsomschrijving You will work at a large and progressive Telecom organization with offices in the Netherlands and Europe. The domain where you are going to work is responsible for designing and maintaining the Fixed Networks and other network solutions. They deliver communication products and services to companies and consumers. Furthermore, they deliver the data flow and mobile network in the Netherlands.Currently they are searching for a Lead .Net Developer to support one of the three scrum teams for delivering the best services. As a Lead .Net Developer you will be working closely together with your team picking up user stories.

Bekijk vacature »

.NET Developer PACS / Multimedia

Wil jij met jouw ontwikkelskills medisch specialisten het optimale uit beeldmateriaal laten halen? Dan is dit jouw droombaan! Ter versterking van ons PACS-team in Amsterdam zoeken wij een ontwikkelaar die verantwoordelijkheid krijgt over zijn ‘eigen’ software. Jouw baan In deze functie ga je medische apparatuur (ECG\echo\OCT\MRI\Etc) integreren in ons EPD. Jij houdt je daarnaast bezig met het maken van software om de verschillende output-formaten van de apparatuur te ondersteunen en te presenteren aan medische specialisten. Tevens ben je verantwoordelijk voor het ontwerpen, ontwikkelen, ondersteunen en onderhouden van je eigen PACS-tools (Picture Archiving and Communication System). Die tools integreer je feilloos

Bekijk vacature »

Mobile App Developer

Ons Mobile-ontwikkelteam zoekt een gedreven Mobile App Ontwikkelaar. Ben jij analytisch en heb je passie voor het ontwikkelen van apps? Dan zijn wij op zoek naar jou! Jouw baan ChipSoft heeft al diverse apps uitgebracht en het aantal gebruikers hiervan neemt snel toe. Je kunt hierbij denken aan apps voor verpleegkundigen, thuiszorgmedewerkers, de sterilisatieafdeling en - natuurlijk - de artsen zelf. Door jouw hands-on-mentaliteit, eigenwijsheid en technisch inzicht kun je nauwkeurig herbruikbare software schrijven. Die software sluit naadloos aan op onze ‘back end’ (HiX, onze ICT-totaaloplossing voor de zorg). Samen met je collega’s ben je verantwoordelijk voor het ontwerpen en

Bekijk vacature »

C# ontwikkelaar gezocht, academisch niveau, goed s

Ben je als .NET ontwikkelaar op zoek naar een (nieuwe) analytische uitdagende baan? Een baan waar je te maken krijgt geavanceerde wiskundige modellen? Dan zou deze organisatie je dit kunnen bieden. Voor een organisatie in Delft zijn we momenteel op zoek naar .NET ontwikkelaar met een academisch niveau en kennis of affiniteit met het bouwen van modellen, dataprocessen en applicaties in .NET C#. De organisatie houdt zich bezig met het leveren van zeer specifieke diensten voor de financiële sector en doet veel zaken met grote financiële instellingen. Het gaat hier om een kleinere organisatie van circa 15 mensen waarvan 5

Bekijk vacature »

Front End Developer with excellent Angular skills

Front End Developer with excellent Angular skills to help migrate software application into the Cloud (Front End Developer Angular 65K Rotterdam IND Registered) For an international organisation, specialised in data management for the process industry, we are looking for a Front End Developer with strong work experience in Angular technologies. This organisation has developt a software solution that takes on the important role of connecting people, data and assets, and translates this data into 3D models. Until recently it was a desktop solution, that is currently being migrated to the (AWS) Cloud. Are you up for the task? Who are

Bekijk vacature »

Java Ontwikkelaar FileNet P8 suite Overheid

Bedrijfsomschrijving De organisatie waarbinnen je aan de slag zal gaan levert diensten aan een groot aantal ministeries binnen Nederland. De systemen die zij beheren worden dan ook dagelijks door duizenden medewerkers gebruikt. Hierdoor is het van groot belang dat deze systemen altijd optimaal werken. Recent is er een project gestart waarbij een deel van de huidige systemen vernieuwd gaan worden. Voor de afdeling die verantwoordelijk is voor het inrichten en beheren van de nieuwe omgeving zijn mij momenteel opzoek naar een Java ontwikkelaar met kennis op het gebied van FileNet. Als FileNet Ontwikkelaar ga jij er samen met jouw DevOps

Bekijk vacature »

Java/AWS Developer

Voor een klant in Amsterdam ben ik op zoek naar een ervaren Java/AWS developer. In deze rol is het belangrijk dat je de vertaalslag van techniek naar de business kan maken in een complexe omgeving. Omdat je in een groot landschap met geavanceerde technieken komt te werken zal je elke dag wel iets leren. Je zal als fullstack back-end developer werken aan back-end applicaties in de cloud (AWS) samen met een team van app developers, front end developers en QA engineers. Technieken Java 8/11 Spring Boot REST Hibernate Maven/Gradle Docker AWS Services Micro Services Niet direct beschikbaar, maar wel interesse?

Bekijk vacature »

Digital Workplace Engineer

Ben jij een ambitieuze Digital Workplace Engineer die de ontwikkelingen en innovaties op het gebied van Digital Workplace & Cloud op de voet volgt? 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 werken door het volgen van trainingen en behalen van certificaten. Wat ga je doen? Als Digital Workplace Engineer werk je binnen een team van enthousiaste specialisten om de hoog beschikbare Digital Workplace infrastructuren (zowel

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

25/11/2020 17:47:29
 
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.