Class

Intro
Een class is simpel weg een groep variabelen en functies die met die variabelen werken. In een goede class werkt ook alles samen. Bovendien kan, als je het goed doet, een class de overzicht van je broncode een stuk verbeteren.
Een class heeft in ieder geval de volgende syntax:

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
<?php
class Klassenaam {
    var
$Variabelenaam;
    var
$Variabelenaam2 = array(); //je kan er alvast een array van maken
    var $Varaibelenaam3 = "een string"; //of een andere waarde toekennen

    function Functienaam {
        //functie
        //functie
        //nog meer functie...

    }

}

?>

Een class roep je aan door er een object van te maken door middel van
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $object = Klassenaam; ?>
of
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $object = Klassenaam(); ?>

Functie roep je aan door
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $object->functienaam(parameters, parameterss..); ?>
en variabelen door
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $object->variabelenaam; ?>


Praktijk
Laten we eens kijken wat we kunnen doen.
Stel dat we een webwinkeltje hebben. Onze trouwe bezoeker heeft een digitale winkelwagen nodig. En dat is met classes prima te realiseren. Bekijk dit stukje van onze winkelwagen class hieronder eens. Merk trouwens op dat alle elementen van dezelfde klasse met de $this variabele worden aangesproken.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class wagentje {
    var
$items = array();

    function
add_item($artikel_nummer, $aantal) {
        if (array_key_exists($artikel_nummer, $this->items)) {
            $this->item[ $artikel_nummer ] += $aantal;
        }
else {
            $this->item[ $artikel_nummer ] = $aantal;
        }
    }
}

?>


Lekker overzichtelijk, efficiënt, en goed samenwerkend.

Waarschuwing
Dingen die je niet moet doen.

1. Je mag een class niet in meerdere bestanden of php blokken opsplitten. Dit zal dus niet werken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
class wagentje {
    var
$vartje = array();

    ?>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
    function functie() {
        
        echo 'Functie gedaan';
    }
}

?>

Dit zal echter wel werken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
class wagentje {
    var
$vartje = array();

    function
functie() {
        ?>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
        echo 'Functie gedaan';
    }
}

?>


2. Je mag geen van je classes stdClass noemen.
Dit omdat deze class al gebruikt wordt door de Zend Engine van PHP.

3. Als je in een php versie lager dan 5 werkt mag je de __sleep en __wakeup functies niet declareren in je class

4. Je mag over het algemeen bij versies lager dan php 5 geen functies hebben die beginnen met __
Het is in ieder geval niet aan te raden.

5. Bij versies vóór php 5 moet je constante var initializers gebruiken.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class Klasse {
    //zal niet werken in php4:
    var $date = date('Y');
    var
$array = array('Klaas', $waarde);
    var
$stfu = $tsja;
    var
$owner = 'Klaas ' . 'of' . ' Jan';

    //zal wel werken
    var $arr = array('Dit', 'Dat', 'Achter', 'Voor');
    var
$string = "Heeey!";
}

?>
Op de volgende pagina ga ik uitleggen hoe je dit probleem toch kan oplossen.

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Inleiding
  2. Class
  3. Constructors
  4. Extending
  5. Paar andere dingen

PHP tutorial opties

 
 

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.