-
17-09-2004, 16:44 #1
PHP: hoe kan ik een private method aanroepen in de class zelf?
Misschien een domme vraag maar het is een deel van een php probleem:
1) Hoe kan ik een private method aanroepen in de klasse zelf:
self::function() of this->function(); ??
2) Kan een non-static method een private static variabele van die class wijzigen?
Het doel:
De class moet onthouden hoeveel instances ervan gemaakt zijn, daarom de static variabele
De static variable wordt gebruikt in de __construct method om een unieke key toe te wijzen aan elke instance van die class.
hier is de class: (het relevante gedeelte toch)
<?php
class card
{
private $Card_owner_id;
private static $Card_total;
private $Card_game_id;
public function __construct()
{
self::createNewCard();
$this->Card_owner_id = 0;
}
private function createNewCard()
{
self:
Card_total++; //increment the static variable
$this->Card_game_id = self:
Card_total; //assign unique id
}
public function giveCardGameId()
{
return $this->Card_game_id;
}
public function giveCardTotal()
{
return self:
Card_total;
}
}
?>
Dit probeerde ik uit te voeren; het gaf geen error maar gewoon een leeg scherm:
<?php
for ($i = 0; $i < 10; $i++) {
$card[$i] = new card();
}
for ($i = 0; $i < 10; $i++) {
print "CardGameId: $card[$i]->giveCardGameId() : $card[$i]->giveCardTotal() <br />";
}
?>
Iemand een idee?
Alzeker bedankt.--> we don't lie, we use statistics! <--
mijn machientjeno votes
-
-
17-09-2004, 17:26 #2
$this->functie();
en het 2de vermoed ik dat dat moet gaan, maar dat test je gewoon best eens uit.
edit : op deze pagina staat er meer uitleg over de static : http://be2.php.net/language.oopLast edited by servi; 17-09-2004 at 17:31.
no votes
-
17-09-2004, 19:48 #3Member
- Registered
- 12/10/02
- Location
- mars
- Posts
- 14,319
- iTrader
- 2 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
self::function() is voor statische functies.
$this is voor "gewone" functies.no votes
-
18-09-2004, 01:36 #4
an sich is er niets mis met je class, al kan ze een hoopje compacter geschreven worden. verder zit er een kanjer van een fout in je print regeltje

probeer het zo eens:
PHP Code:<?php
class card {
private $Card_owner_id = 0;
private static $Card_total = 0;
private $Card_game_id;
public function __construct() {
$this->Card_game_id = ++self::$Card_total; // increment the static variable & assign unique id
}
public function giveCardGameId() {
return $this->Card_game_id;
}
public function giveCardTotal() {
return self::$Card_total;
}
}
for ($i = 0; $i < 10; $i++) {
$card[$i] = new card();
}
for ($i = 0; $i < 10; $i++) {
print "CardGameId: ".$card[$i]->giveCardGameId()." : ".$card[$i]->giveCardTotal()." <br />";
}
?>Last edited by PerfectPC; 18-09-2004 at 02:32.
no votes
