Opbouw van een class

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

G P

G P

09/09/2012 20:21:15
Quote Anchor link
Omdat de andere topic een script review is en dit wel met hetzelfde te maken heeft maar geen review meer is, plaats ik mijn vraag maar hier.

Mijn vraag is simpel, is dit de correcte opbouw om OOP te programmeren?
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
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(){
    }

}


?>
Gewijzigd op 09/09/2012 20:40:13 door G P
 
PHP hulp

PHP hulp

28/11/2024 15:47:37
 
- Raoul -

- Raoul -

09/09/2012 20:23:46
Quote Anchor link
Heb je die 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?
Gewijzigd op 09/09/2012 20:24:27 door - Raoul -
 
G P

G P

09/09/2012 20:37:30
Quote Anchor link
G P op 09/09/2012 18:48:49:
Heb het even snel gelezen en heb hierover een vraag...
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.

Het voorbeeld zal ik even aanpassen.
 
Wouter J

Wouter J

09/09/2012 20:46:08
Quote Anchor link
Als je iets snel wilt doen => niet aan OO beginnen. Daar zul je echt de tijd voor moeten maken.

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/
 
- Raoul -

- Raoul -

09/09/2012 20:56:26
Quote Anchor link
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.
 
Wouter J

Wouter J

09/09/2012 21:02:26
Quote Anchor link
Ook dat vind ik niet waar. Het ligt er maar net aan wat jou voorkeur is. Ik denk dat je met coding standards niet kunt zeggen welke net is en welke niet, je kan alleen aangeven wat het meeste gebruikt wordt en dat zijn de PSR standards.

Voorbeeld, hoe kun je hier nou zeggen wat 'net' is en wat niet?
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
<?php
if ('bar' == $foo) {
    // ...
}

if($foo == 'bar')
{

    // ...
}

if ($foo == 'bar') :
    // ...
endif;

if('bar' == $foo)
    // ...
?>
 
Reshad F

Reshad F

09/09/2012 22:56:17
Quote Anchor link
@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..
 
G P

G P

10/09/2012 11:40:11
Quote Anchor link
Ok, heb mijn PC volledig afgesloten, mij papier en pen bij de hand genomen, rustig aan tafel gezet met de uitgeprinte tutorial...
Resultaat die ik bereikt heb:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
+ Output
- 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
 
Eddy E

Eddy E

10/09/2012 11:48:54
Quote Anchor link
Ik denk dan: .... dit kan grotendeels ook met CSS:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
+ Image
- setPath --> <img src="....">
- setRotation // rotation
- setOpacity // opacity
- setColorFill / background-color
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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%

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
+ 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.
Gewijzigd op 10/09/2012 11:49:56 door Eddy E
 
G P

G P

10/09/2012 11:58:56
Quote Anchor link
setColorFill: de afbeelding wordt gevuld met 1 bepaalde kleur, hierdoor heb ik mijn afbeelding in bijvoorbeeld zwart/wit.
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
 
Wouter J

Wouter J

10/09/2012 13:38:35
Quote Anchor link
En met CSS3 filters (of de veel betere IE filters) kun je ook de rest van de functies oplossen...
 
G P

G P

10/09/2012 13:49:19
Quote Anchor link
Dus met andere woorden, je moet geen class maken want er bestaan andere oplossingen die beter zijn.
Gewijzigd op 10/09/2012 13:50:04 door G P
 
Wouter J

Wouter J

10/09/2012 14:11:53
Quote Anchor link
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.
 



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.