OOP begrijp er nog weinig van

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sjonnie

sjonnie

02/07/2008 10:58:00
Quote Anchor link
Hi,
Na het lezen van een aantal tutorials over OOP ben ik tot de conclusie gekomen dat ik er nog maar weinig van snap (om er iets functioneels mee te doen).
Ik begrijp nog niet helemaal de flexibiliteit van classes. Wanneer ik een object aanmaak dmv $obj = new ding; kan ik dan variabelen meegeven $obj->echo_iets("halloooo"); die ik dan bijvoorbeeld echo dmv een functie binnen een class (even buiten beschouwing nemen of dat handig is of niet).

Ik ben net begonnen maar ik loop hierop stuk en de tutorials geven wat mij betreft te weinig voorbeelden in het gebruik van classes met name het aanroepen van geschreven classes.

Thanks
 
PHP hulp

PHP hulp

30/11/2024 00:52:11
 
Jacco Engel

Jacco Engel

02/07/2008 11:03:00
Quote Anchor link
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
<?php

class blaat
{
    private $variabele ;
    public function __construct()
    {

        echo "instantie van de class" ;
    }

    
    public function setVar($waarde)
    {

        $this->variabele = $waarde ;
    }

    
    public function getVar()
    {

        return $this->variabele ;
    }
    
}


$blaat = new blaat(); //Hier krijg je de echo
$blaat->setVar("Dit is een test") ; // Hiermee geef je de private var de waarde die je aan je functie  mee geeft
echo $blaat->getVar(); // En hiermee haal je hem weer op
?>


Dit voorbeeldje duidelijk :)?
 
Aaa Trump

aaa Trump

02/07/2008 11:11:00
 
Sjonnie

sjonnie

02/07/2008 11:20:00
Quote Anchor link
@Jacco Ahh er begint licht te komen in de duisternis! ;-)
@ robin, die heb ik nog niet gezien, thanks.
 
Sjonnie

sjonnie

02/07/2008 11:26:00
Quote Anchor link
Nog even een NOOB vraagje, wat is het voordeel van classes ten opzichte van functies? Of is dat appels met peren vergelijken?
 
Emmanuel Delay

Emmanuel Delay

02/07/2008 12:29:00
Quote Anchor link
Een functie geeft 1 keer maximum 1 ding terug.

bv. vierkantswortel(25); zou 5 kunnen weergeven.
Indien je meer returns verwacht, kan je de waarden eerst in een array steken en die array weergeven.

Een class bundelt echter zowel variabelen (properties) als functies (methods), die enkel geassocieerd zijn met die class.

Een object, van een bepaalde class, behoudt zo lang je het nodig hebt alle properties (variabelen binnen een class) die je gezet hebt.

Dat maakt dus dat je een object in verschillende stappen kan opbouwen, terwijl je bij een functie alles in 1 keer moet regelen.
 
Robert Deiman

Robert Deiman

02/07/2008 12:50:00
Quote Anchor link
@Emmanuel

Een class is meer een verzameling van bij elkaar horende functies, die al dan niet achter elkaar uitgevoerd kunnen worden.
Het voordeel van classes ten opzichte van losse functies is dat je altijd de benodigde functies bij elkaar hebt staan in de instantie die je aanmaakt. (met $var = new Classname) Een class "gastenboek" zal alles bevatten (behalve misschien de database connectie) wat je voor je gastenboek nodig hebt. Met uitzondering van de html die terug komt, want dat moet je eigenlijk los definiëren.
De bedoeling van een class is dat je alleen de output teruggeeft, en dat je die in HTML (bijv een template) weergeeft. Een betere scheiding tussen php en html... :)

Wat jij zegt dat je maximum 1 ding terug krijgt is met een class in principe ook zo, je kan functies achter elkaar laten uitvoeren, en deze elke keer wat terug laten geven, maar dat kan op de "andere manier" ook wel..
 
Jacco Engel

Jacco Engel

02/07/2008 12:54:00
Quote Anchor link
ook kun je met classes een veilige koppeling maken tussen een front en een backend mbv van private functies/variabelen
 
Emmanuel Delay

Emmanuel Delay

02/07/2008 12:56:00
Quote Anchor link
Ik weet wat een class is, maar leg dat eens in 1 kort tekstje uit...
 
Joren de Wit

Joren de Wit

02/07/2008 13:04:00
Quote Anchor link
Het grootste voordeel van het gebruik van klassen in PHP (en elke andere programmeertaal) heb ik hier nog niet gelezen. Dat is namelijk het generaliseren van je PHP code zodat deze schaalbaarder wordt en makkelijker aan te passen is. Bovendien krijg je nu de mogelijkheid om precies dezelfde code/klasse binnen verschillende applicaties te gebruiken zonder dat je iets aan de klasse zelf hoeft te veranderen...

Als we kijken naar het eerder genoemde voorbeeld van het 'gastenboek', dan zul je er waarschijnlijk snel achter komen dat je voor dat doeleinde met meer dan 1 klasse te maken hebt. Denk bijvoorbeeld aan de klasse 'gastenboek' die het gastenboek zelf voorstelt, maar denk ook aan een klasse/object 'bericht' dat een reactie in het betreffende gastenboek voorstelt. Beide objecten hebben andere eigenschappen en functionaliteiten die in je procedurele code met elkaar verweven worden. Maar daarnaast zou je je kunnen voorstellen dat je de bericht klasse ook nog eens in een andere applicatie (bijv. een forum) kunt gebruiken.

Dit zijn dus de grootste voordelen van het OO programmeren. Je programmeert losse objecten die je later in verschillende applicaties en toepassingen zou kunnen gebruiken.
 
Sjonnie

sjonnie

02/07/2008 14:08:00
Quote Anchor link
@Blanche, het voorbeeld met het gastenboek vind ik "clear" voor webapplicaties zou ik mij idd kunnen indenken dat je berichten op verschillenden manieren wilt weergeven.

Volgens mij begint het al te dagen
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
<?php

class table_css {
    var
$column_widths;
    
    function
open_css_tablediv($class){
        echo "<div class=\"$class\" style=\"width:620px;border:1px solid #000;\"> \n";
    }
    
    function
open_table_headers($array,$column_widths){
        if(!is_array($array)){
            echo "Geen array meegegeven in de functie. ";
        }
else {
            for($i = 0;$i < count($array);$i++){
                $width = $column_widths[$i];
                $value = $array[$i];
                echo "<div style=float:left;width=$width>$value</div>\n";
            }
        }

        return $this->column_widths = $column_widths;
    }
    
    
    function
show_table_content($array){
        if(!is_array($array)){
            echo "Geen array meegegeven in de functie. ";
        }
else {
            $nr_columns   = count($this->nr_columns);
            $column_withs = $this->column_widths;
            $ii=0;
            
            
            for($i = 0;$i < count($array);$i++){
                $value = $array[$i];
                $width = $column_withs[$ii];
                echo "<div style=float:left;width=$width>$value</div>\n";
                if($ii == 2) $ii = 0;
                else $ii++;
            }
        }
    }
    
    function
close_css_tablediv(){
        echo "</div>";
    }
}






$column_widths  = array("300","100","210");
$column_headers = array("kop1","kop2","kop3");
$column_content = array("hallo","ik","ben","sjonnie","en","het","maakt","even","niet","uit","wat dit is");

$table_object = new table_css();
$table_object->open_css_tablediv("hallo");
$nr_columns = $table_object->open_table_headers($column_headers,$column_widths);
$table_object->show_table_content($column_content);
$table_object->close_css_tablediv();





?>
Gewijzigd op 01/01/1970 01:00:00 door sjonnie
 
Sjonnie

sjonnie

02/07/2008 14:14:00
Quote Anchor link
Ik zie wel dat de maten niet helemaal kloppen maar ik denk dat ik het idee nu snap.
 
Emmanuel Delay

Emmanuel Delay

04/07/2008 20:47:00
Quote Anchor link
Ik heb er nog eens over nagedacht.

Eigenlijk is het inderdaad niet zo gemakkelijk om uit te leggen waarom je in php classes zou gebruiken.

Php is in wezen een sequentiële taal.

Waarvoor dient php? De belangrijkste dingen lijken me
-communiceren met mySQL (lezen, invoegen, updaten)
-een string html opbouwen en in 1 keer "uitbraken" naar de client.

dat maakt dat wat php doet eigenlijk is wat een functie doet, met als parameters (vooral) $_GET, $_POST, $_SESSION.

De object-orientatie is trouwens nog maar deftig ontwikkeld sinds php5. In php4 stelde dat nog niet zo veel voor.

Uitleggen waarom je OO werkt, is veel eenvoudiger als je het bv. over javascript hebt. Javascript is heeeeel erg object georienteerd, hoewel het soms niet zo opvalt, aangezien het woord class er niet in voorkomt.


Dit gezegd zijnde: indien je weet wat OOP is, is het wel aangenaam om OO te werken in php. Uiteindelijk komt het allemaal meer natuurlijk over.
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay
 



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.