OOP User classe

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Frontend Developer

Hi! Do you want to have an impact on our fast growing digital business in more than 12 countries? And sell online products that contribute to the sustainable use of our scarce water resources? Convert design and your own ideas into code, so that our webshops become a little bit better every day? If so, we are looking for you! FRONTEND DEVELOPER driven, team player, out of the box As an experienced frontend developer, you will ensure that good ideas are translated into functional code. You will build various webbased applications in close cooperation with colleagues from IT, E-commerce and

Bekijk vacature »

Full stack developer - Oil & Gas

Ben jij een allround ontwikkelaar die wil bijdragen aan de energietransitie? Lees dan verder! Wat ga je doen? Als Full Stack Java Ontwikkelaar draag je verantwoordelijkheid voor het gehele proces van het omzetten van wensen, problemen of vragen naar concrete oplossingen. Integratie, testen, vastleggen van kennis en beslissingen, problem management en automation zijn onderdeel van je takenpakket in zowel SAFE of DevOps gestuurde omgevingen als ook in omgevingen die nog werken volgens het traditionele waterval model. Als ontwikkelaar krijg je alle mogelijkheden om je technisch verder te ontwikkelen en samen te werken met gedreven collega's. Wat breng je mee? •

Bekijk vacature »

Magento Developer

Bedrijfsomschrijving Dit informele bedrijf dat een aantal bekende webshops in beheer heeft is per direct op zoek naar een Senior Magento developer die de lopende webshops en andere e-commerce uitingen naar zijn hand zet. Deze gezellige organisatie telt 13 innovatieve jonge en ervaren medewerkers. Ze realiseren en beheren succesvolle webshop oplossingen en doen dit van A tot Z. Hierbij kun je denken aan bijvoorbeeld oplossingen voor warehouse en koppelingen naar kassasystemen. Bij dit bedrijf willen ze niet alleen een webshop opleveren maar gaat het om het doorontwikkelen, verbeteren en optimaliseren. Op dit moment zoeken zij een senior PHP developer die

Bekijk vacature »

BI Developer @ Utrecht

2021-07-27 iSense BI Developer Hou je van datagedreven organisaties? Ben je op zoek naar een uitdaging waarbij de nieuwste BI-tools en -technieken worden gebruikt? Wil je verantwoordelijkheid nemen in verschillende digitaal transformatieprojecten? ISPA50581 Organisatie Je gaat werken bij een wereldwijde financiële organisatie met een hoofdkantoor in Nederland. Je maakt deel uit van een van de belangrijkste teams binnen de organisatie voor het creëren van bruikbare inzichten uit data. De organisatie hecht veel belang aan de samenwerkings- en communicatiecultuur tussen verschillende ontwikkelingsteams. Je gaat werken in een team dat samenwerkt om verschillende bedrijfsdomeinen te helpen door dataproducten te maken. Deze omgeving

Bekijk vacature »

Business Developer Digital (tijdelijke opdracht)

Voor een grote financiële instelling is Yacht op zoek naar een Business Developer Digital Bank Assisted Onboarding: nieuwe klant worden voor Private Banking Je werkt in één van de agile teams op onze afdeling Online Channels, waarin wordt gewerkt aan het realiseren van de client journey ‘rekening openen voor Private Banking klanten’. Dit team wordt nieuw opgezet en gaat heten ‘Bank Assisted Onboarding’: een rekening openen, waarbij we zoveel mogelijk gebruik maken van de digitale mogelijkheden. Dit proces bestaat nog niet en is vooral complex door de complexe bestuurssituaties van sommige Private Banking klanten, de juridische componenten van de digitale

Bekijk vacature »

Software Developer / PL/SQL / API's / integratie /

2021-07-12 iSense Software Developer / PL/SQL / API's / integratie / logistics Heb jij ervaring met applicaties ontwikkeling en lijkt het je tof om in een logistieke omgeving te werken aan maatwerk projecten? Ben jij graag bezig met programmeren in een Oracle omgeving? Lees dan snel verder! ISGO50460 Organisatie Voor onze klant, een ambitieuze en groeiende partij in regio Tilburg, zijn wij op zoek naar een PL/SQL ontwikkelaar. Het gaat om een internationaal bedrijf met duizenden medewerkers waarvan ongeveer duizend in Nederland. Ze werken met het WMS JDA Dispatcher De organisatie heeft een informele sfeer en medewerkers worden gemanaged op

Bekijk vacature »

Software Ontwikkelaar ERP / Testen Software

Over het bedrijf: Wij zijn een leverancier van software. Heb jij affiniteit met informatica? Heb jij ervaring als ERP software developer? Vaste baan: Software Ontwikkelaar ERP Softwarebranche 2.800 - 4.200 Software Developer Wij zijn een grote leverancier van software voor vastgoedbedrijven (commercieel en sociaal), outsourcing en consultancy. Wij zijn vertegenwoordigd in meerdere Europese landen. Wij werken voor grote klanten. We doen omvangrijke projecten die we bij ons op kantoor realiseren (geen detachering). Wij werken met state-of-the-art technologie en lopen daarin voorop. Wil jij de diepte in en veel leren, dan is deze baan geknipt voor jou. Jouw werkzaamheden als Software

Bekijk vacature »

Fullstack Developer GUI Linux / UI/UX Design

Bij welk bedrijf je gaat werken: Wij zijn de leider in intelligente signaleringssoftware voor o.a. 2G/3G, 4G/LTE, 5G netwerken. Ben jij een fullstack developer? Heb je ervaring met o.a. HTML en CSS, UI/UX design, JavaScript, Typescript, React, Go en PHP? Vaste baan: Fullstack Developer GUI Linux HTML CSS 3.000 - 4.500 Fullstack Developer Wij ontwikkelen intelligente software voor 4G / 5G, WiFi en andere complexe netwerken. Het gaat om software producten voor routing, security en interworking. Toe aan een mooie, nieuwe uitdaging? Bij ons kom je terecht in een prettige, dynamische werkomgeving, waarbij je samenwerkt met uitstekende vakspecialisten op gebied

Bekijk vacature »

Tech Lead Application Developers

REMOTE WORK POSSIBLE FOR THIS ROLE* For our Europe development center in Eindhoven we’re looking for an Application Tech Lead that is able to work on enterprise type applications deployed across the world. As a tech lead at UPS you work on enabling the delivery of functionality for highly complex IT Systems. More than 500,000 UPSers move goods, capital and information across the world and deliver over 22 million items to their destinations every day. And our IT Systems make sure this can be done as efficient as possible. What You’ll Do You collaborate with internal customers as well as

Bekijk vacature »

.NET Developer @ Regio Amsterdam

2021-03-15 iSense .NET Developer Ben jij een .NET Developer en werk je graag aan een complex landschap? Ga je graag aan de slag in een vernieuwingstraject? Lees dan snel verder! ISJ49333 Organisatie De organisatie is werkzaam in de financiële dienstverlening met meer dan 200 medewerkers en meer dan 250.000 eindgebruikers is het een van de grotere binnen haar branche. Je komt te werken in een team waarmee je verantwoordelijk bent voor het ontwikkelen en onderhouden van de financiële applicaties binnen de organisatie, denk hierbij aan het bouwen en onderhouden van portalen. Als .net developer ga jij het development team ondersteunen

Bekijk vacature »

Java Developer Noord-Nederland

Heb jij een passie voor technologie en ben jij altijd al als eerste op de hoogte van ontwikkelingen en innovaties? Weet jij hoe je de verbinding moet maken tussen business en techniek? Dan ben je welkom bij ons! Wat ga je doen? Als Java developer bij CGI ga je deel uitmaken van de grootste en meest actieve Java community van Nederland. Je levert een bijdrage aan de technische realisatie van complexe systemen voor onze klanten. Hierbij maak je in eenvoudige taal aan de klant duidelijk welke softwareoplossingen op zijn of haar organisatie van toepassing kunnen zijn. Je weet voor onze

Bekijk vacature »

Advanced Mendix Developer Order Management Systeme

Advanced Mendix Developer Order Management Systemen (NL) Den Haag HBO/WO IT Professional "Als Advanced Mendix Developer impact maken op de groeiende e-commerce markt? Je doet dit bij PostNL door met je DevOps team onze Mendix applicaties verder te ontwikkelen, waarbij je complexe logistieke business processen vertaalt naar applicaties die ons primaire proces ondersteunen". Wat ga je doen? PostNL wordt een postal tech company We nemen de ontwikkeling van onze IT applicaties in eigen hand door onze eigen software-ontwikkel-capability op te zetten. Als Advanced Mendix Developer ben je onderdeel van een multidisciplinair, agile werkend Business-IT-team. Samen met dit team bouw je onze logistieke IT-applicaties verder

Bekijk vacature »

Full Stack Java Developer

Do you embody the Agile principles? Do you have passion for innovation and get motivated by complex challenges and innovative solutions? Are you ready for working with state of the art technology stacks? Do you have enough experience to quickly and adaptively deploy new frameworks and tools for our customers? Your day-to-day activities As an experienced full stack Java Developer you design, develop and test software systems and applications. You know what the software system of the client needs to do and you find ways to improve and revolutionize them. You create software tailored to the clients’ specific needs. High

Bekijk vacature »

Senior Developer C#

UPS is looking for a Senior Developer C# *REMOTE WORK POSSIBLE FOR THIS ROLE* As a Senior Developer at UPS you work on delivering functionality for highly complex IT systems. You collaborate in agile teams and participate in emerging technologies and processes like CI/CD and DevOps to ensure that we meet our objectives effectively and efficiently. Your primary role is to perform full system life cycle activities, e.g. analysis, technical requirements, design, coding, testing and the implementation of software. Working in our Europe development center in Eindhoven means working in an international team with onsite people as well as team

Bekijk vacature »

Software Developer React Native @ Regio Den Bosch

2021-07-22 iSense Software Developer React Native Heb je al minimaal enige ervaring met het bouwen van geavanceerde apps met React Native en wil je je hierin verder verdiepen? Wil je graag werken bij een ambitieus bedrijf dat de grootste bedrijven van Nederland als klanten heeft? Dan is dit dé vacature voor jou! ISMO50518 Organisatie Voor onze klant, een ambitieus en vooruitstrevend bedrijf in regio Den Bosch, zoeken we een Software Developer die met React Native aan de slag gaat. Het bedrijf werkt voor verschillende bedrijven en heeft de grootste organisaties van Nederland als klanten! Je komt te werken in een

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 ('info@test.nl')";
// $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

05/08/2021 16:37:46
 
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', 'pim@hotmail.com');
$id = $user->getId();
// User ophalen
$user = User::load($id);

// En bewerken
$user->setEmail('pim@gmail.com');
$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.