Guide: PHP- & MySQL-innføring: Kapittel 7

Objekt-orientering

Etter en lengre juleferie skal vi dekke objekt-orientering, som er en metode for å sette data og oppførsel i sammenheng.

Objekt-operasjoner

Den oppmerksomme leser har gjerne lagt merke til at objekter på en måte er en utvidelse av array-konseptet, og det er derfor en rekke operasjoner man kan utføre på objekter som man også kan gjøre på arrayer.

Ved å bruke en standard foreach-løkke kan man gå gjennom alle de synlige medlemsvariablene i et objekt. Det gjør det mulig å skrive ut innholdet i et objekt på en enkel måte. Legg merke til at det stod synlige medlemsvariabler over; om du forsøker dette i en metode som ikke er en del av klassen objektet tilhører vil du kun se medlemsvariabler merket public.

Et eksempel på denne typen objekt-iterasjon finner du i PHP-manualen.

Serialisering

serialize() er en funksjon som kan ta en hvilken som helst variabel i PHP og gjøre den om til en verdi som du kan lagre. Funksjonen blir som oftest brukt sammen med arrayer, men vi gjennomgikk den ikke da vi så på disse. Den brukes sammen med unserialize(), som tar den lagrede verdien og gjør den om til en PHP-variabel igjen.

serialize() går litt utenfor det vi har lært til nå, og lagrer både private, beskyttede og offentlige verdier i et objekt. Dette er nyttig om vi har et stort objekt som vi vil sende over nettet, eller lagre til senere.

En viktig ting å bite merke i, er at for å rekonstruere et objekt fra en slik verdi trenger man også klassedeklarasjonen. Det er kun objekt-verdiene som blir lagret i den serialiserte strengen, og metoder og klassestruktur ellers blir ikke lagret. Det må man gjerne tenke over når man overfører objekter på denne måten mellom ulike systemer; klassen må finnes i begge ender.

Her er et raskt eksempel som viser serialisering og rekonstruering av et objekt;



<?php
class Test
{
    private 
$private "a";
    protected 
$protected "b";
    public 
$public "c";
}
$a = new Test();
$a->public "ny verdi";
$serialisert serialize($a);
$objekt unserialize($serialisert);
echo 
$objekt->public;
?>

Husk at serialize() og unserialize() også fungerer på arrayer, og at det er her de er mest brukt.