Waarom 'var's aanmaken in een class?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Thomas

Thomas

10/11/2008 16:09:00
Quote Anchor link
Hallo PHPers!

Ik las net een tutorial over OOP met een voorbeeld van een Mens opgebouwd uit classes en functions, maar ik vind dit deel erg verwarrend:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
    var $leeftijd;
    var $huidskleur;
    var $lengte; // in centimeters
    var $gewicht; // in grammen
    var $laatsteKeerGegeten;
    var $meterGelopen;


Waarom is dit gedaan? Heeft dit voordelen? Er worden geen waardes en dergelijke aan gegeven, dus het lijkt mij vrij nutteloos!

Nu is het een erg goede tutorial (mijn mening als nieuwe PHPer) dus ik vroeg me af waarom ik dit zou doen als ik zelf aan de slag ga :)

Bedankt voor de hulp!
Gewijzigd op 01/01/1970 01:00:00 door Thomas
 
PHP hulp

PHP hulp

29/04/2024 16:39:49
 
RvW Of toch niet

RvW Of toch niet

10/11/2008 16:12:00
Quote Anchor link
gebruik zo ie zo geen var
maar public private of protected
 
Rens nvt

Rens nvt

10/11/2008 16:14:00
Quote Anchor link
@Torn: als je strict programmeert hoor je variabelen eigenlijk te definieeren voor je ze gebruikt. PHP biedt wel de mogelijkheid om variabelen te gebruiken die niet gedefnieerd zijn, maar dit maakt je code over het algemeen niet beter (leesbaar).

Als je aan foutafhandeling doet, en al je scripts netjes met error_reporting(E_ALL) start, zul je dan ook foutmeldingen krijgen als "undefined index..." als je niet gedefinieerde variabelen gebruikt.

En nog een bijkomend voordeel: als je een IDE gebruikt die code aanvult, zie je ook meteen welke variabelen van een classe je kunt gebruiken...
 

10/11/2008 16:24:00
Quote Anchor link
rvw schreef op 10.11.2008 16:12:
gebruik zo ie zosowieso geen var
maar public private of protected

Inderdaad, want dat betekend dat je php4 gebruikt, en dus dat je nogal een kreupele vorm van OOP gebruikt.
Gebruik php5's OOP, en zie ook Visibility.
 
Thomas

Thomas

10/11/2008 16:31:00
Quote Anchor link
@Iedereen: Dank voor de tips en snelle reacties! Ik merk nu dat ik echt nog maar een beginner ben en dat ik nog wel even moet inlezen op dit vlak. Ik gebruik wel PHP 5(.2.6) en daar wil ik ook wel naar programmeren dan.

Ik ga nog wat lezen voordat ik verder ga, dank jullie wel!
 
Lode

Lode

10/11/2008 18:00:00
Quote Anchor link
Als je vars niet defineerd zijn ze standaard null volgens mij.
Maar defineren is gewoon een good practice en houd dingen overzichtelijk.

Waarom variabelen in een class?
Heel simpel zodat je ze binnen de class kan herbruiken.
Dat is ook de toegevoegde waarde van een class boven losse functies.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
class Lode{

    protected $_message = null;

    public function __construct($message){
         //validatie zou wellicht geen kwaad kunnen...
         $this->_message = $message;
    }

    public function getMessage(){
        return $this->_message;
    }

    public function __toString(){
        return 'message: '.$this->_message.'<br />'.PHP_EOL;
    }
}

//
$lode = new Lode('hallo');
echo $lode->getMessage().'<br />'.PHP_EOL;
echo $lode; //__toString magic method
?>


In de methods kan je natuurlijk allerlei generieke handelingen verrichten...
Gewijzigd op 01/01/1970 01:00:00 door Lode
 
Rens nvt

Rens nvt

10/11/2008 18:17:00
Quote Anchor link
@Lode: een niet gedefinieerde variabele is niet null, maar niet gedefinieerd. Wanneer je een variabele definieert met var $var (of protected / private / public $var), dan is hij standaard NULL als je geen waarde toekent.

Het herbruiken van variabelen binnen een class kan overigens ook zonder ze eerst te definieeren binnen de classe, in principe is dit niet anders:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
class classname {
  function
__construct()
  {

    $this->var = '';
  }
}

?>


dan

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
class classname {
  public $var = '';
}

?>
Gewijzigd op 01/01/1970 01:00:00 door Rens nvt
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.