[OOP] Klein vraagje...
Ik ben een tutorial aan het lezen over OOP en ik kwam daar het volgende tegen:
Code (php)
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!
Gewijzigd op 15/07/2010 18:01:09 door Ilyes Ahidar
Wat je hier doet is de classe naam opgeven. Dus er bestaat ook nog een class Reactie.
Later kan je bijvoorbeeld dit doen
$reactie->reactie_toevoegen( $this->reactie );
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 )"
Zie voor meer informatie:
http://php.net/manual/en/language.oop5.typehinting.php
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!
Bedankt allebei voor jullie snelle reactie!
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
class Guestbook{
public $posts = array();
public $limit = 20;
public function __construct(){
$this->getPosts($this->limit));
}
private function getPosts($limit){
//post query enzo.
foreach($posts AS $post){
$posts[] = new GuestbookPost($post));
}
}
public function AddPost(GuestbookPost $post){
//hier toevoegen.
}
}
class Guestbook{
public $posts = array();
public $limit = 20;
public function __construct(){
$this->getPosts($this->limit));
}
private function getPosts($limit){
//post query enzo.
foreach($posts AS $post){
$posts[] = new GuestbookPost($post));
}
}
public function AddPost(GuestbookPost $post){
//hier toevoegen.
}
}
Gewijzigd op 19/07/2010 12:57:47 door Jurgen Meijer
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).