• PHP deel 2: Variabelen

    8 December 2010 23:12 door
    We leggen je uit wat variables juist zijn hoe je ze correct moet gebruiken en hoe we er simpele rekensommetjes mee kunnen uitvoeren. Ook halen we de type variables aan zodanig dat je een goede basis hebt en weet wat een variable nu juist is.


    2.1 Introductie

    Een variabelen in PHP begint altijd het met dollarteken: $. Bij de naamgeving van variabelen moet je rekening houden met volgende voorwaarden:

    • Een variabele mag nooit beginnen met een cijfer ($8ball)
    • De toegelaten karakters zijn alle alfanumerieke karakters + underscore (_).
    • Variabelen zijn hoofdletter gevoelig; $martijn is niet dezelfde variabele als $Martijn.

    Variabelen worden in PHP standaard ‘By Value’ toegewezen, dit wil zeggen dat de waarde gekopierd wordt. Je kan references naar variabelen maken door er er een ampersant & voor te plaatsen. Een uitzondering hierop zijn objecten, objecten worden in PHP altijd ‘By Reference’ doorgegeven. Objecten ‘kopiëren’ gaat dus niet met ‘=’ maar dient te gebeuren met de clone() functie.

    PHP-code:
    <?php
        $_var1 
    ‘Martijn’;
        
    $var2 ‘Piet’;
        $
    8ball true//Syntax error
        
    $value $_var1//De variabelen $value bevat nu ook ‘Martijn’, wijzingen in $_var1 of $value worden nu niet doorgevoerd in de andere variabele.
        
    $reference = &$var2//Als ik nu $reference of $var2 wijzig, zal de waarde van beide variabelen veranderen. Ze verwijzen(reference) beide naar dezelfde waarde in het geheugen.

        //Objecten
        
    $oPiet = new Costumer();
        
    $oPiet.name ‘Piet’;
        
    $oKlant $oPiet//Zowel $oPiet als $oKlant verwijzen nu beide naar dezelfde instantie van de klasse Costumer.
        
    $oKlant.name ‘Martijn’//Veranderd voor beide variabele
    ?>
    References naar constante waarden zoals 5, (4 * 3) gaan uiteraard niet.

    Variabelen kunnen ‘gewist’ worden door hun waarde gelijk te stellen aan null of door de unset() functie te gebruiken.

    PHP-code:
    <?php
        $var 
    ‘Martijn’//variabele met waarde ‘Martijn’
        
    unset( $var ); //De variabele bestaat na deze regel niet meer.
        //$var = null; heeft hetzelfde effect als unset()
    ?>
    PHP is weakly typed dit wil zeggen dat variabelen niet expliciteit geïnitialiseerd moeten worden. Dit is opzich handig maar heeft ook een aantal nadelen. PHP meld niet wanneer je een niet bestaande variabele wil gebruiken, als je echter ergens een hoofdletter vergeet kan je code soms rare resultaten geven die moeilijk te debuggen zijn. Je kan dit wel oplossen door E_STRICT te gebruiken.

    Ongeïnitialiseerde variabelen hebben standaard de waarde null, hierop vertrouwen is echter geen goed idee, mischien heb je deze variabelen al in een ander geinclude bestand gebruikt en bevat hij toch al een andere waarde. Dit is weer een moeilijk te debuggen fout. Je vermijd dit best door variabelen te initialseren. Je kan de functie isset() gebruiken om te controleren of een variabele op een bepaald punt in de code bestaat.

    PHP-code:
    <?php
        $myBool 
    false;
        
    $myInt 0;
    ?>
    2.2 Type

    Er zijn 3 soorten variabelen in PHP: Scalar, Compound en een aantal uitzonderingen.

    Er zijn 4 soorten scalar types:

    • Integer: gehele getallen, de standaard waarde is 0
    • Float (double): decimale getallen, de standaard waarde is 0.0
    • Boolean: waar of niet waar, de standaard waarde is false
    • String: stukken tekst, de standaard waarde is een lege string

    Er zijn twee soorten compound types:

    • Array’s
    • Objecten

    De uitzonderingen zijn:

    • Resource: dit zijn streams (open file handlers), afbeeldingen, database verbindingen, ..
    • Null: geeft ‘niks’ aan


    2.2.1 Integers
    Een integer kan alle gehele getallen bevatten zowel negatief als positief. Als een getal te groot is (overflow) zal de variabelen automatisch geconverteerd worden naar een float. Een integer kan max 232 combinaties bevatten, ze zijn gelijk verdeeld over positieve en negatieve waarde. (0 is positief)

    Een variabele kan naar een integer geconverteerd worden door er (int) voor te plaatsen. Bij een string zullen alle letters genegeerd worden en worden alleen de cijfers bijgehouden. Bij het converteren van Boolean naar Integer zijn de waardes 0 en 1 respectievelijk voor FALSE en TRUE.

    PHP-code:
    <?php
        $myString 
    ‘test123’;
        
    $int1 = (int)$myString//waarde van $int1 is 123
        
    $int2 = (int)false//waarde van $int2 is 0
    ?>
    2.2.2 Float
    Een float is een decimaal getal. Een float kan op verschillende manieren ingegeven worden.

    PHP-code:
    <?php
        $getal 
    1.23;
        
    $getal2 1.23e10;
        
    $getal3 1E40;
    ?>
    De e/E duid de exponent aan. De grootte van een float is platform afhankelijk en is maximaal ongeveer 1.8e308.
    De standaard waarde voor een float is 0.0. Een Float converteren naar een boolean geeft altijd true tenzij de waarde 0.0 is.

    2.2.3 Boolean
    Het type boolean is net zoals in alle andere talen TRUE of FALSE. Bij het converteren naar boolean vanuit andere types krijg je altijd true behalve voor de volgende waarde:

    • Integer met waarde 0 (negatieve waarden zijn ook TRUE)
    • Float met waarde 0.0
    • Een lege string (‘’) of de string ‘0’
    • Een lege array
    • null

    2.2.4 String
    Een string is een verzameling van tekens (bytes), de grootte is virtueel oneindig (beperkt door de hoeveelheid beschikbaar geheugen).

    Er zijn verschillende manieren om een string te definiëren:

    PHP-code:
    <?php
        $myString 
    ‘dit is een string’
        $String2 
    “Dit is een regel\n dit is de volgende regel”;
        
    $String3 = <<<MijnTekst
    Dit
    hoort
    allemaal
    nog
    bij de string
    MijnTekst;
    ?>
    De laatste methode is de HEREDOC methode, alles van het begin (<<<MijnTekst) tot het einde (MijnTekst hoort bij de string.

    Als de gegevens tussen enkele qoutes staan worden karakters niet geëscaped (\n), bij dubbele qoutes wel.

    PHP-code:
    <?php
        $var 
    “Eerste regel\nTweede regel”//Dit geeft twee regels
        
    $$var ‘Eerste regel\nTweede regel’//Dit drukt die \n gewoon af, er wordt geen nieuwe regel gestart.
    ?>
    Geschreven door: Martijn Croonen.
    Kleine aanpassingen door: Aerts Kurt.
    Reacties 1 Reactie
    1. Dexter's schermafbeelding
      Dexter -
      Ik heb weer een paar opmerkingen bij deze (en dit is positief bedoeld om de tutorial te verbeteren en niet negatief ).
      - Wat is E_STRICT? (Weet ik zelf ook niet)
      - Je begint over isset() maar in het voorbeeld daaronder gebruik je dit niet?
      - Misschien bijzetten dat als je van een String naar een int gaat, je aan het "casten" bent.
      - In het voorlaatste voorbeeld ben je een puntkomma vergeten bij $mystring.
      - Misschien er ook bijzetten dat je in dubbele quotes ook variabelen kan schrijven (en dit best tussen { .. }).


      Dexter