1. #1
    Calvin's Avatar
    Registered
    28/12/03
    Posts
    116
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0

    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 machientje
    no votes  

  2. #2
    servi's Avatar
    Registered
    01/07/02
    Location
    Zolder
    Posts
    2,487
    iTrader
    6 (100%)
    Mentioned
    0 Post(s)
    $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.oop
    Last edited by servi; 17-09-2004 at 17:31.
    no votes  

  3. #3

    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  

  4. #4
    PerfectPC's Avatar
    Registered
    16/11/03
    Posts
    297
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    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  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in