Door
Ilyes Ahidar
op 15-07-2010 17:23
gewijzigd op 15-07-2010 18:01
2.485 views
Hey iedereen,
Ik ben een tutorial aan het lezen over OOP en ik kwam daar het volgende tegen:
<?php
class Gastenboek
{
private $reacties;
private $bestand;
public function __construct($bestand)
{
$this->bestand = $bestand;
}
public function reactie_toevoegen(Reactie $reactie)
{
}
public function weergeven()
{
}
}
?>
Het gaat dan om de regel met: public function reactie_toevogen(Reactie $reactie).
Daar staat voor de variable wat een parameter is van reactie_toevoegen het woord: Reactie. Wat is het en waarvoor is het? Ik weet niet echt hoe ik dat moest opzoeken op google. Heb even gekeken of ik het misschien terug kon vonden op php.net/functions. Maar zonder resultaat.
Dus iemand die mij dat kan uitleggen of een link heeft? Alvast bedankt!
Allereerst, reactie_toevogen is natuurlijk geen normaal nederlands.. Verder zou ik ook met engelse naamgeving werken, maar dat is natuurlijk eigen keus.
Wat je hier doet is de classe naam opgeven. Dus er bestaat ook nog een class Reactie.
Het wordt "Type hinting" genoemd. Het heeft verschillende voordelen.
Het is bedoeld om af te kunnen dwingen van wat voor type het object moet zijn die je daar als parameter verwacht. Dit kan het type van het object zijn of 1 van de klasse namen die hij extend. Of de naam van de interface die hij geïmplementeerd moet hebben. Zo kan je er dus voor zorgen dat methodes die jij wil aanroepen op dat object ook echt bestaan en dus gedefinieerd en uitvoerbaar zijn.
Bijkomend voordeel is er ook nog vaak in je IDE. Je IDE weet nu van welk type de parameter is en kan dus juiste code completion weergeven.
Het werkt trouwens niet alleen voor klassen maar ook voor varaibale type. je zou dus af kunnen dwingen dat een parameter van het type "array" is door "function name(array $pParam )"
@Niels Kieviet:
Hoe oplettend maar je hebt wel gelijk :), heb het verbetert. En zoals ik al zei ben ik een [link=http://development.blog.markkazemier.nl/2009/06/introductie-oop-gastenboek-bouwen/]tutorial[/link] aan het lezen/volgen.
@M Ypma:
Ja, thats it :). Dat van array, string wist ik, maar wist niet dat het ook zo werkte als hier boven met een classe. Tnx voor de link!
Vraag je af of je de limit wel op die plaats wilt implementeren. Dat is immers iets dat met de weergave van de posts te maken heeft en waarschijnlijk wil je binnen je Guestbook class alle posts tot je beschikking hebben. Van daaruit kun je dan bepalen hoe de weergaven zal zijn...
@Ilyes Ahidar: "Dat van array, string wist ik, maar wist niet dat het ook zo werkte als hier boven met een classe." --> Dit werkt dus niet bij strings (dit wordt wel verwacht voor PHP 6).