Webwinkel systeem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Victor -

Victor -

10/05/2012 17:30:32
Quote Anchor link
Ik heb een opzet voor een webwinkel systeem gemaakt.
Is dit volgens alle OOP regels?
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
class Article {
    public function addArticle() { }
    public function editArticle() { }
    public function deleteArticle() { }
}


class ArticlePhoto extends Article {
    public function addPhoto() { }
    public function editPhoto() { }
    public function deletePhoto() { }
}


class User {
    public function addUser() { }
    public function editUser() { }
    public function deleteUser() { }
}


class Cart {
    public function addArticle() { }
    public function deleteArticle() { }
}


class Order {
    public function addCart() { }
    public function pay() { }
}
 
PHP hulp

PHP hulp

28/11/2024 04:32:11
 
Wouter J

Wouter J

10/05/2012 17:55:39
Quote Anchor link
Het is beter om hiervan een UML diagram te maken.

Je hebt alles mooi in objecten verdeelt, alleen de methoden kunnen her en der wat beter. Je hebt nu een User object gemaakt, deze houd de gegevens vast (naam, wachtwoord, enz.). Jij geeft hem nu ook methoden mee om contact te maken met de DataBase. Dat betekend dat onze klasse 2 dingen heeft om te doen => niet echt goed.
De oplossing is om het DataMapper pattern te maken. Hierdoor maak je een UserMapper. Deze werkt dan tussen de Database en de User klasse. Hierdoor weet de User klasse niks van de DB en de DB niks van de User klasse, kortom ideale flexibiliteit.

De procedurele code wordt dan zoiets:
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
$pdo
= new PDO(...);
$userMapper = new UserMapper($pdo);

// haal users op
$user1 = $userMapper->getById(1); // haal user id=1 op
echo 'Hallo '.$user1->getName();

// maak nieuwe users
$user2 = new User('Wouter', 'myPass');
$user2 = $userMapper->create($user2); // voeg de user aan de DB toe

/ verwijder users
$user3 = new User('Victor', 'PHPhulpIsGaaf');
$userMapper->delete($user3);
?>
 
Victor -

Victor -

10/05/2012 18:08:44
Quote Anchor link
@Wouter:
In het voorbeeld dat jij geeft degradeer jij nu de user class tot een class die alleen properties heeft en verder niks kan uitvoeren, dat is dan geen onnodige class geworden?
En als je een mysql class heb mag je in de user class dan niet doen:
$mysql->query("INSERT user ..."); Of is dat al te veel mogelijkheden voor één class?
 
Wouter J

Wouter J

10/05/2012 18:13:22
Quote Anchor link
Quote:
dat is dan geen onnodige class geworden?

Nee. Uiteindelijk zijn de meeste klassen die je in je template gebruikt klassen die alleen gegevens vasthouden. Dat is juist zo mooi van OOP. Je hebt 1 connectie punt waar je per object de gegevens instopt. Hoe die gegevens daar komen maakt jou niks uit. Dat maakt het heel flexibel.
Nu gebruik je bijv. een datamapper. Maar wat als je straks dit project om gaat zetten in een MVC project? Dan heb je een UserModel. Aangezien het niks uitmaakt hoe we het in de User klasse zetten hoeven we alleen maar de UserMapper te veranderen in een Model en zal de rest gewoon doorwerken.
Dat is nou het heerlijke van OO!

Quote:
En als je een mysql class heb mag je in de user class dan niet doen:
$mysql->query("INSERT user ..."); Of is dat al te veel mogelijkheden voor één class?

Ik gebruik nooit een MySQL klasse. Dit regel ik allemaal met Mappers of Models. Voor de code achter zo'n datamapper kun je even naar pims voorbeeld kijken.
 



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.