Opbouw van een class
Mijn vraag is simpel, is dit de correcte opbouw om OOP te programmeren?
Code (php)
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?php
// PLAATS DE AFBEELDING
class Image {
public function __construct(){
}
public function setURL($path_to_image = false){
}
public function setRotate($degrees = 0){
}
public function setOpacity($opacity = 0){
}
}
// PLAATS HET WATERMERK
class Watermark {
public function __construct(){
}
public function setURL($path_to_watermark = false){
}
public function setRotate($degrees = 0){
}
public function setOpacity($opacity = 0){
}
public function setHorizontal($position_x = 'center'){
}
public function setVertical($position_y = 'center'){
}
}
// PLAATS DE TEKST
class Text {
public function __construct(){
}
public function setFont($path_to_font = NULL){
}
public function setPhrase($phrase = NULL){
}
public function setColor($color = '000'){
}
public function setBackgroundColor($background_color = 'FFF'){
}
public function setRotate($degrees = 0){
}
public function setOpacity($opacity = 0){
}
public function setHorizontal($position_x = 'center'){
}
public function setVertical($position_y = 'center'){
}
}
// HET TONEN VAN AFBEELDING, WATERMERK, TEKST
class Output {
public function __construct(){
}
private function checkImage(){
}
private function checkWatermark(){
}
private function checkText(){
}
public function showImage(){
}
public function saveImage(){
}
}
?>
// PLAATS DE AFBEELDING
class Image {
public function __construct(){
}
public function setURL($path_to_image = false){
}
public function setRotate($degrees = 0){
}
public function setOpacity($opacity = 0){
}
}
// PLAATS HET WATERMERK
class Watermark {
public function __construct(){
}
public function setURL($path_to_watermark = false){
}
public function setRotate($degrees = 0){
}
public function setOpacity($opacity = 0){
}
public function setHorizontal($position_x = 'center'){
}
public function setVertical($position_y = 'center'){
}
}
// PLAATS DE TEKST
class Text {
public function __construct(){
}
public function setFont($path_to_font = NULL){
}
public function setPhrase($phrase = NULL){
}
public function setColor($color = '000'){
}
public function setBackgroundColor($background_color = 'FFF'){
}
public function setRotate($degrees = 0){
}
public function setOpacity($opacity = 0){
}
public function setHorizontal($position_x = 'center'){
}
public function setVertical($position_y = 'center'){
}
}
// HET TONEN VAN AFBEELDING, WATERMERK, TEKST
class Output {
public function __construct(){
}
private function checkImage(){
}
private function checkWatermark(){
}
private function checkText(){
}
public function showImage(){
}
public function saveImage(){
}
}
?>
Gewijzigd op 09/09/2012 20:40:13 door G P
tutorial nu doorgelezen? Je zei van wel, maar ik zie het niet echt.
In de tutorial stond dat classnamen ALTIJD met een hoofdletter moeten zijn.
De ene keer gebruik je een setter met duidelijk 'set' voor je functie (als voorbeeld: 'setURL') maar dan zie ik 'public function rotate'
Wat bedoel je hiermee? Is het niet setRotate?
Heb je die In de tutorial stond dat classnamen ALTIJD met een hoofdletter moeten zijn.
De ene keer gebruik je een setter met duidelijk 'set' voor je functie (als voorbeeld: 'setURL') maar dan zie ik 'public function rotate'
Wat bedoel je hiermee? Is het niet setRotate?
Gewijzigd op 09/09/2012 20:24:27 door - Raoul -
G P op 09/09/2012 18:48:49:
Zoals ik dus zei, snel gelezen. Ik heb nog niet de tijd genomen om het helemaal uit te lezen. Het is dan ook een hele boterham. Dit ga ik wel helemaal rustig lezen van begin tot einde op een rustige dag met 10 liter koffie bij de hand.Heb het even snel gelezen en heb hierover een vraag...
Het voorbeeld zal ik even aanpassen.
En je hebt er nu al niet voldoende tijd voor gemaakt, basis tutorials over slechts alleen de syntax (denkvermogen is nog veel ingewikkelder) krijgen bij jou al geen tijd...
Tevens zul je die laptop/computer/ander device ding uit moeten zetten en gewoon op een kladblok schrijven wat je nou precies wilt, vervolgens ga je uittekenen welke klassen je daarvoor nodig hebt, met welke properties en methods. Pas als dat helemaal goed is uitgedacht ga je je code schrijven.
Ik ben een tutorialreeks begonnen, moet er ooit nog verder mee gaan, over het denkvermogen van OO. Waar het eigenlijk echt om draait, misschien eens goed om rustig door te lezen: http://wouterj.nl/serie/orienteer-je-in-objecten/
Raoul, classnamen moeten helemaal niet altijd met een hoofdletter beginnen. Dat is echt grote onzin. Wij mensen hebben dit als standaard aangegeven, het is verstandig het te doen, aangezien heel de PHP community dat doet, maar als je dat niet wilt doe je het niet. Die standaarden kun je overigens hier terugvinden: https://github.com/php-fig/fig-standards/blob/master/accepted/
Ja ok Wouter, je krijgt geen errors als je klassenamen zonder hoofdletters schrijft maar ik bedoelde hiermee dat het niet net is om het zonder te doen.
Voorbeeld, hoe kun je hier nou zeggen wat 'net' is en wat niet?
@Wouter het is wel zo dat als je volgens bepaalde standaarden programmeert andere programmeurs je code sneller snappen. omdat programmeurs meestal op een bepaalde manier code lezen zonder dat ze het meestal doorhebben. Ik krijg er op school zelfs punten aftrek voor als ik mijn klassenaam niet met een hoofdletter schrijf accolades verkeerd plaats etc etc..
Resultaat die ik bereikt heb:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
+ Image
- setPath // Pad naar de afbeelding
- setRotation // Aantal graden dat de afbeelding moet gedraaid worden met de wijzers van de klok mee
- setOpacity / setTransparency // Doorzichtigheid van de afbeelding
- setColorFill / fillWithColor // Afbeelding vullen met 1 kleur
- replaceColor // Vervang een kleur door een andere kleur
- setPath // Pad naar de afbeelding
- setRotation // Aantal graden dat de afbeelding moet gedraaid worden met de wijzers van de klok mee
- setOpacity / setTransparency // Doorzichtigheid van de afbeelding
- setColorFill / fillWithColor // Afbeelding vullen met 1 kleur
- replaceColor // Vervang een kleur door een andere kleur
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
+ Watermark
- setPath
- setRotation
- setOpacity / setTransparency
- setColorFill / fillWithColor
- replaceColor
- setHorizontal // Plaats het watermerk op een bepaalde positie links/rechts
- setVertical // Plaats het watermerk op een bepaalde positie boven / onder
- setPath
- setRotation
- setOpacity / setTransparency
- setColorFill / fillWithColor
- replaceColor
- setHorizontal // Plaats het watermerk op een bepaalde positie links/rechts
- setVertical // Plaats het watermerk op een bepaalde positie boven / onder
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
+ Text
- setPhrase // Tekst die getoont moet worden
- setFont // Pad naar uw eigen lettertype
- setFontSize // Lettergrootte
- setFontColor // Kleur van de tekst
- setBackgroundColor // Achtergrondkleur van de tekst
- setRotation // Draai de tekst met de wijzers van de klok mee
- setOpacity / setTransparency // Doorzichtigheid van de tekst
- setHorizontal // Tekst plaatsen in de richting links/rechts
- setVertical // Tekst plaatsen in de richting boven/onder
- setPhrase // Tekst die getoont moet worden
- setFont // Pad naar uw eigen lettertype
- setFontSize // Lettergrootte
- setFontColor // Kleur van de tekst
- setBackgroundColor // Achtergrondkleur van de tekst
- setRotation // Draai de tekst met de wijzers van de klok mee
- setOpacity / setTransparency // Doorzichtigheid van de tekst
- setHorizontal // Tekst plaatsen in de richting links/rechts
- setVertical // Tekst plaatsen in de richting boven/onder
Code (php)
1
2
3
2
3
+ Output
- showImage // Toon de afbeelding op het scherm
- saveImage // Afbeelding bewaren
- showImage // Toon de afbeelding op het scherm
- saveImage // Afbeelding bewaren
Hoe ziet dit eruit? Ben ik nog iets vergeten? Zou je het nog anders doen?
Je ziet soms 2 namen naast elkaar staan gescheiden met een slash (/) Hiervan zou ik 1 naam nemen.
Bijvoorbeeld bij: setColorFill / fillWithColor, hierbij vind ik dat fillWithColor meer zegt dan setColorFill, wat denken jullie?
Toevoeging op 10/09/2012 11:41:11:
En voordat ik het vergeet, + naam = class-naam en - naam is de functienaam die uitgevoerd kan worden
Code (php)
1
2
3
4
5
2
3
4
5
+ Image
- setPath --> <img src="....">
- setRotation // rotation
- setOpacity // opacity
- setColorFill / background-color
- setPath --> <img src="....">
- setRotation // rotation
- setOpacity // opacity
- setColorFill / background-color
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
+ Watermark
- setPath // <img src=....">
- setRotation // rotation
- setOpacity // opacity
- setColorFill // background-color: #000;
- replaceColor
- setHorizontal // position: relative; left/50%/right...
- setVertical // position: relative; top center bottom, 83%
- setPath // <img src=....">
- setRotation // rotation
- setOpacity // opacity
- setColorFill // background-color: #000;
- replaceColor
- setHorizontal // position: relative; left/50%/right...
- setVertical // position: relative; top center bottom, 83%
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
+ Text
- setPhrase // <p> met position: relative;
- setFont // font-family
- setFontSize // font-size
- setFontColor // color: #fff;
- setBackgroundColor // background-color
- setRotation // rotation
- setOpacity // opcity
- setHorizontal // position: relative; left / center /right
- setVertical // position: top center bottom/code]
+ Output
- showImage // <img....>
- saveImage // niet nodig
Kortom: alleen voor replacecolor() zou dit nodig zijn.
Leuk zo'n class/functie om je plaatje te wijzigen (bij eenmalig wel sneller), maar om dit on the fly te doen is echt niet handiger/sneller/zuiniger met resources.
- setPhrase // <p> met position: relative;
- setFont // font-family
- setFontSize // font-size
- setFontColor // color: #fff;
- setBackgroundColor // background-color
- setRotation // rotation
- setOpacity // opcity
- setHorizontal // position: relative; left / center /right
- setVertical // position: top center bottom/code]
+ Output
- showImage // <img....>
- saveImage // niet nodig
Kortom: alleen voor replacecolor() zou dit nodig zijn.
Leuk zo'n class/functie om je plaatje te wijzigen (bij eenmalig wel sneller), maar om dit on the fly te doen is echt niet handiger/sneller/zuiniger met resources.
Gewijzigd op 10/09/2012 11:49:56 door Eddy E
Zoals jij zegt met CSS een background-color toe te voegen krijgt mijn afbeelding geen andere kleur.
Met de class kan ik bij 1 afbeelding in mijn 4 hoeken een watermerk zetten en diagonaal een tekst tonen die over de hele afbeelding loopt.
Gewijzigd op 10/09/2012 12:01:20 door G P
En met CSS3 filters (of de veel betere IE filters) kun je ook de rest van de functies oplossen...
Gewijzigd op 10/09/2012 13:50:04 door G P
Ja, alleen de filters werken nog niet overal dus is dit een mooie fallback. Wat je eventueel wel zou kunnen doen is een Cache class maken en de afbeelding na het maken laten cachen, dan zou hier nog wel wat potentie in zitten.