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.
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
?>
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..
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.
@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
<?php
class table_css {
var $column_widths;
function open_css_tablediv($class){
echo "<div class=\"$class\" style=\"width:620px;border:1px solid #000;\"> \n";
}