OOP User classe

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Junior Java Developer

Dit ga je doen Full stack web- en appdevelopment; Vertalen van de functionele wensen naar de technische specificaties; Sturing geven aan/klank board zijn voor de software teams; Trainen van de software teams; Sparren met klanten; Meedenken over architectuur. Hier ga je werken De organisatie is een bureau welke websites en mobiele applicaties bouwt voor verschillende toonaangevende organisaties. Hierbij richten zij zich voornamelijk op de sectoren leisure, overheid en zorg. De sfeer intern kenmerkt zich door informaliteit, gezelligheid en ambitie. Ze werken dag in dag uit samen om mooie producten op te leveren voor hun klanten. Op dit moment zijn er

Bekijk vacature »

Back-end Developer (Permanent position with the em

Bedrijfsomschrijving Dutch specialist in technical installation materials. Functieomschrijving Purpose of the position: Our client is looking for a Back-end Developer who, together with the rest of the energetic and dynamic team, is responsible for the development and management of the website. This not only concerns the development and management of the current website, but also the development of a new Headless Commerce Platform to keep the customer's website Future proof. Within the IT department, there is a real DevOps culture and the commerce team is at the forefront and tries to implement continuous improvements. Most important tasks: ï‚· Designing and

Bekijk vacature »

Front-end developer Consultancy in teamverband wer

Functie Het team bestaat uit User Experience designers, Data Scientists en Software Engineers. Momenteel zijn ze op zoek naar een ervaren Front-end of Fullstack developer die samen met de consultants aan de slag gaat om de business requirements te vertalen naar technische oplossingen. Los van het finetunen van extenties, help je bij het configureren van bijvoorbeeld een mobiel bankieren app. Hierin ben je van A tot Z betrokken en zie je bijvoorbeeld ook toe op de uitvoering van testen. Je expertise wordt optimaal benut en je krijgt verschillende kansen om deze uit te breiden door met verschillende innovatieve technologieën aan

Bekijk vacature »

(Junior) Back-end Ontwikkelaar

Functie omschrijving We are looking for a dutch native speaker Altijd al willen werken bij een organisatie, die maatwerk applicaties bouwt, die echt impact hebben in de maatschappij? Dit is je kans. Voor een kleine organisatie in de regio van Eindhoven ben ik op zoek naar een C# Ontwikkelaar. Jij gaat aan de slag met de ontwikkeling van maatwerk software en applicaties. Deze organisatie werkt voor grote organisaties in Nederland, maar ook voor het MKB. De projecten waar je aan gaat werken zijn erg divers, waardoor je werk uitdagend blijft en je erg veel kan leren. Verder ga je aan

Bekijk vacature »

Ervaren PHP Developer

Functie omschrijving Jelling IT zoekt ervaren PHP developer! Voor een organisatie in de regio Rhenen zijn wij op zoek naar een ervaren PHP developer die gaat functioneren als een verlengstuk van de klant. Jij bent iemand die technisch complexe zaken met enthousiasme aanvliegt. Je bent in staat om aan meerdere projecten te werken en werkt graag met de nieuwste technieken. In deze functie werk je veel samen met front-end developers en stel je alles in het werk om grote verschillen voor de klanten teweeg te brengen. Verder ben jij iemand die graag zichzelf uitdaagt en die altijd de beste wilt

Bekijk vacature »

Traineeship Full Stack .NET Developer

Dit ga je doen Start op 7 augustus 2023 bij de Experis Academy en ontwikkel jezelf tot een gewilde Full Stack .NET Developer. Maar hoe ziet het traineeship eruit en wat kun je verwachten? Periode 1 De eerste 3 maanden volg je fulltime, vanuit huis, een op maat gemaakte training in teamverband. Je leert belangrijke theorie en krijgt kennis van de benodigde vaardigheden en competenties die nodig zijn om de IT-arbeidsmarkt te betreden. Zowel zelfstandig als in teamverband voer je praktijkopdrachten op het gebied van front- en backend development uit. Wat er per week op het programma staat kun je

Bekijk vacature »

Back End Developer .NET

Dit ga je doen Ontwikkelen in C# .NET en werken aan nieuwbouw, uitbouw en onderhoud van de software (die communiceren met 68.000 sensoren, waardoor er meerdere miljoenen berichten per uur verwerkt worden); Samenwerken in Scrum Teams; Meewerken aan verschillende, uitdagende projecten; Werken met nieuwe technologieën en vrijheid krijgen om jezelf te ontwikkelen en door te groeien. Hier ga je werken Je komt als Developer te werken bij een organisatie die gespecialiseerd is in software die real-time wordt gebruikt. De software constateert waar werk moet worden uitgevoerd en de chauffeurs worden met een andere applicatie hierop geattendeerd. Ook wordt er direct

Bekijk vacature »

C# .NET Developer

Functie omschrijving Wij zijn op zoek naar een C# .NET Developer voor een leuke opdrachtgever in de omgeving van Hilversum! Voor een leuk bedrijf in de omgeving van Hilversum zijn wij op zoek naar een Back-end developer die klaar is voor een nieuwe uitdaging. Ben jij iemand die graag aan verschillende projecten werkt en het ook leuk vindt om bij klanten op bezoek te gaan? Dan ben jij de perfecte kandidaat! Deze functie is erg divers, je moet dus goed kunnen schakelen. Je komt te werken in een klein team van developers. Binnen het bedrijf hangt er een gemoedelijke informele

Bekijk vacature »

SQL database developer

Functie omschrijving Voor een softwarebedrijf gespecialiseerd in het ontwikkelen van logistieke software in omgeving Tilburg zijn wij op zoek naar een ervaren SQL database developer. Je gaat werken aan uitdagende, complexe projecten. Iedere klant/project betekent maatwerk in de database. Jouw werkzaamheden zullen er als volgt uit zien: Je bent verantwoordelijk voor de gehele ontwikkelstraat. Van architectuur tot ontwikkeling Je gaat je bezig houden met het ontwerpen en ontwikkelen van MS SQL server databases. Je gebruikt hiervoor T-SQL als programmeer laag. Je begeleidt als lead developer de projecten bij klanten van A – Z. Je sluit aan bij meetings met klanten,

Bekijk vacature »

Medior/Senior Python developer

Functie Jij als Senior Python developer hebt al ruime ervaring opgedaan. Bedrijven komen bij de organisatie om technische vraagstukken op te lossen. Jij als specialist bent dus de representatie van deze kwaliteit. Je zult de keuze krijgen tussen lange of korte projecten waarin je komt te werken in multidisciplinaire teams. Projecten die je gaat uitvoeren zijn zeer uitlopend. Zodoende kun je aan de ene kant kiezen voor een greenfield project en stroom je bij een ander project midden in een migratietraject in. Voor de ene klant ontwikkel je ene nieuwe portal en voor het andere project duik je veel meer

Bekijk vacature »

Back-end programmeur

Functieomschrijving Heb jij recent jouw HBO ICT diploma in ontvangst mogen nemen? Of ben je toe aan een nieuwe uitdaging? Voor een erkende werkgever in regio Waalwijk zijn wij op zoek naar een back-end developer. Kennis of ervaring met C# & SQL is een must! Je houdt je bezig met het ontwikkelen van nieuwe functionaliteiten; Je bent verantwoordelijk voor de beheer en ontwikkeling van de software; Je draagt bij aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de C# based applicaties; Je test de software en ontwikkelt deze door; Je brengt de aanpassingssuggesties van klanten in kaart, om ze

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Senior .NET developer

Functie As a Senior .NET developer you will work in our Research & development team. Our team consists of 17 colleagues! We are currently busy setting up a completely new architecture for a new product. We use VS2022 and .NET 6.0 for our new product. Your function is therefore mainly backend oriented. Since we develop measuring equipment for the chemical industry, it is also very important to develop high-quality software for its control. You are also responsible for designing, implementing and testing new features. For this position its also very important to ensure future-proof and sustainable architecture. Eisen - A

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Pagina: « vorige 1 2 3 4

The Ultimate

The Ultimate

28/12/2010 22:30:46
Quote Anchor link
Database.class.php:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php

/*****
*
*    Class - Database
*
*    Deze class handelt de communicatie met de MySQL Database af.
*    De methods kunnen verder worden uitgebreid.
*
*    ------------------------------------------------------------
*
*****/


interface Database
{
    public function connect($host, $gebruikersnaam, $wachtwoord, $naam);
    public function query($query);
}

  
interface DatabaseResult
{
    public function fetch_assoc();
    public function fetch_alles();
    public function aantal_regels();
}

  
class MySQL implements Database
{
    private $db_connection;
  
    public function connect($host, $gebruikersnaam, $wachtwoord, $naam)
    {

        // Verbinding maken met de database
        if(!($this->db_connection = mysql_connect($host, $gebruikersnaam, $wachtwoord))) {
            throw new DatabaseException('Er is een fout opgetreden tijdens het verbinden met de database: '.mysql_error());
        }

        // Selecteer database
        if(!mysql_select_db($naam)) {
            throw new DatabaseException('Er is een fout opgetreden tijdens het selecteren van de database: '.mysql_error());
        }
    }


    public function query($query)
    {

        if(!$result = mysql_query($query)) {
            throw new DatabaseException('Er is een fout opgetreden tijdens het uitvoeren van een databasequery: '.mysql_error());
        }

        return new MySQLResult($result);
    }
}

  
class MySQLResult implements DatabaseResult
{
    private $result;

    public function __construct($result)
    {

        $this->result = $result;
    }


    public function fetch_assoc()
    {

        return mysql_fetch_assoc($this->result);
    }

  
    public function fetch_alles()
    {

        return mysql_fetch_array($this->result);
    }

  
    public function aantal_regels()
    {

        return mysql_fetch_row($this->result);
    }
}

?>


Test.php:
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
<?php

#===== Database Settings =====#
define('DB_HOST',                            'db.*****.nl');    // Database host
define('DB_USER',                            '.*****.');    // Database username
define('DB_PASS',                            '.*****.');        // Database password
define('DB_DB',                                '.*****.');    // Database name

include('class/database.class.php');

// Creeer object database
$db = new MySQL;

// Maak connectie met en selecteer de database
$db->connect(DB_HOST,DB_USER,DB_PASS,DB_DB);

// Insert query
// $query = "INSERT INTO user (email) VALUES ('[email protected]')";
// $db->query($query);

// Select query

$sql = "SELECT email FROM user WHERE id > 0";
$elementen = $db->query($sql)->fetch_alles();
foreach($elementen as $element){
    // rest van je code
    echo $element.'<br>';
}

?>
 
PHP hulp

PHP hulp

23/11/2024 13:47:31
 
Niels K

Niels K

28/12/2010 22:37:42
Quote Anchor link
Je moet fetch_alles nog aanpassen met de methode die ik je op de vorige pagina gaf ;)
Gewijzigd op 28/12/2010 22:37:55 door Niels K
 
The Ultimate

The Ultimate

29/12/2010 14:04:34
Quote Anchor link
Ok, ik zou vandaag verder gaan met de User Authentication. Voordat ik daar aan toe kom. Moet de User zich uiteraard wel kunnen registreren. Ik ben dus begonnen aan de User.class.php:

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
31
<?php

/****
*
*    User class
*
****/


class User{
    private $_db;
    private $_id;
    private $_username;
    private $_email;
    private $_password;
    private $_registerDate;
    private $_permission;

    public function __construct($id='')
    {

        $this->_id = $id;
        $this->_db = new MySQL;
    }


    public function getEmail()
    {

        return $this->_db->query("SELECT email FROM user WHERE id = '".mysql_real_escape_string($this->_id)."'");
    }
//-> getEmail

}//--> User

?>


Als ik vervolgens het volgende probeer in test.php:

test.php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$userId
= 1;

$user = new User($userId);
echo 'Email: '.$user->getEmail();
?>


Krijg ik de volgende error:
Catchable fatal error: Object of class MySQLResult could not be converted to string in /public/sites/www.******.nl/test.php on line 35

Ik snap dat deze opdracht een resultset teruggeeft en geen string. Daardoor kan deze niet worden weergegeven. Maar is mijn opzet zo goed of zit ik er weer helemaal naast te pielen? Moet ik bijvoorbeeld in de User class in de __construct() wel opnieuw een database object aanmaken? Volgens mij namelijk niet.

URL verwijderd[/modedit]
Gewijzigd op 12/01/2011 18:20:30 door Bas IJzelendoorn
 
Chris -

Chris -

29/12/2010 14:08:23
Quote Anchor link
Tip, in je database connectie gebruik maken van MySQLi, of PDO!
 
Niels K

Niels K

31/12/2010 16:29:08
Quote Anchor link
Repeat van jelmer:
Quote:
Heel heel heel strict genomen zou je inloggen en gebruikers moeten scheiden. Je hebt gebruikers, en je hebt een set classen die inloggen mogelijk maken. Die classen regelen dan het opslaan van de combinatie gebruiker – wachtwoord, (of gebruiker + openid, daarom zijn ze losgetrokken van de User class, zodat je verschillende manieren van inloggen kan maken) en die classen regelen het onthouden van de identiteit van iemand na het inloggen.

Maar goed, dat is wel heel strict genomen ;) Laten we het eerst even bij één enkele klasse houden.

Ik heb hem even voor je gepimpd. Ga daarna eens aan de slag hoe je hem zou kunnen verbeteren.

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php

/**
 * Schrijf maar een leuk verhaaltje, maar vergeet de phpdocs niet!!
 */

class User
{
    /**
     * Uitbreidingen moeten mogelijk zijn, dus maak je velden protected
     */
    
    /**
     * Database object
     *
     * @access    Protected
     * @var        Object
     */

    protected $db;
    protected $id;
    protected $username;
    protected $email;
    protected $password;
    protected $registerDate;
    protected $permission;

    /**
     * Constructor construeert een nieuw User object, bladieblabla
     *
     * @param    Integer    $id
     * @param    Object    $database
     * @access    Public
     * @return    Void
     */

    public function __construct( Database $db, $id = null )
    {

        $this->id = $id;
        $this->db = $db;
    }

    
    /**
     * Methode voor het verkrijgen van het e-mailadres
     *
     * @access    Public
     * @return    String
     */

    public function getEmail( )
    {

        $query =
        "
            SELECT
                email
            FROM
                user
            WHERE
                id = '"
.$this->db->escape( $this->id ). "'
        "
;
        return $this->db->query( $query )->fetch_assoc( );
    }
}

?>


Nu is dit helemaal niet goed OO, maar het gaat mij er even om dat je netjes, overzichtelijk programmeert.

Verder zijn de volgende dingen in je user klasse helemaal niet relevante en dus niet van belang.

- username
- password
- registerDate
- permission

Maak eens een nieuw concept van hoe jij nu verder zou gaan? Ik weet het ik laat je heel vrij en gooi je in het diepe maar dat is volgens mij veel beter dan dat ik en andere het allemaal aan jouw voorkauw. Hier leer je veel meer van, hiervan leer je ook fouten herkennen.

Wederom veel succes.
 
Pim -

Pim -

31/12/2010 18:00:40
Quote Anchor link
Denk aub beter na over deze klasse niels ;)

Stel dat ik een pagina heb met:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo '<a href="mailto:'.$user->getEmail().'>'.$user->getName().' ('.$user->getEmail().')</a>';
?>

Dan heb ik voor 1 regel 3 queries nodig.

Doe iets als:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php

// ActiveRecord is een klasse met als statisch veld een DBAL

class User extends ActiveRecord
{
    protected $id, $email, $name;

    public function __construct($name = null, $email = null, $id = null)
    {

        if(!is_null($name))
            $this->name = $name;        

        if(!is_null($email))
            $this->email = $email;

        if(is_null($id)) {
            if(is_null($name) || is_null($email))
                throw new InvalidArgumentException('Name and email are required for inserting a new user');
            $this->id = $this->db->insert('user',
                              array('name'=>$this->name, 'email'=>$this->email)
            );
        }
else
            $this->id = $id;
    }


    public static function load($id, $fields = array('name', 'email')
    {

        $data  = $this->db->select('user', $id, $fields);

        $name  = isset($data['name']) ? $data['name'] : null;
        $email = isset($data['email']) ? $data['email'] : null;

        return new self($name, $email, $id);
    }


    public function getEmail()
    {

        if(!isset($this->email))
            throw new ActiveRecordParameterNotSetException('email') // oid ;)

        return $this->email;
    }


    public function setEmail($email)
    {

        $this->email = $email;
    }


    public function save()
    {

        $this->db->update('user', $this->id,
                      array('name'=>$this->name, 'email'=>$this->email)
        );
    }

}


// Nieuwe user maak je als volgt:
$user = new User('Pim', '[email protected]');
$id = $user->getId();
// User ophalen
$user = User::load($id);

// En bewerken
$user->setEmail('[email protected]');
$user->save();
?>

Maar dat kan natuurlijk ook anders ;)
Gewijzigd op 31/12/2010 18:10:49 door Pim -
 
Niels K

Niels K

01/01/2011 14:00:15
Quote Anchor link
Quote:
Denk aub beter na over deze klasse niels ;)

Quote:
Nu is dit helemaal niet goed OO, maar het gaat mij er even om dat je netjes, overzichtelijk programmeert.

Dat was even de insteek ;) Qua OO gezien slaat dat natuurlijk geheel de plank mis. Daarom quote ik jelmer vanuit een ander topic. Die heeft daar een goede opzet gegeven.
Gewijzigd op 01/01/2011 14:00:48 door Niels K
 

Pagina: « vorige 1 2 3 4



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.