Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Artiklar / Titel på artikeln

Klasser i PHP 5

Postad 2007-04-12 av Oskar Arvidsson i sektionen ASP.NET, C#, Okategoriserat med 1 Kommentarer | Läst av: 6701, Betyg: 80%

Förord

I den här artikeln tar jag upp grundläggande kunskap om hur man skapar och använder klasser i PHP. Koden är tämligen enkel och syftar inte att ge exempel för en reel applikation, utan bara att visa hur klasser fungerar i PHP.
Innehåll
  » Klasser i PHP 5
  » Konstruktorer
  » Destruktorer
  » Utskrift av objekt
  » Avslutning


Klasser i PHP 5

Syntaxen för att beskriva en klass i PHP 5 skiljer sig ganska mycket från den i tidigare versioner. Har du programmerat i Java, C# eller liknande kommer du känna igen dig. Vi börjar med att skapa en klass som vi kallar Elev.


class Elev {

protected $namn;
protected $klass;

public function getNamn() {

return $this->namn;
}
public function getKlass() {

return $this->klass;
}
}

Nu har vi skapat en klass med namnet Elev, som vi har gett egenskaperna namn och klass. Vi har också gett den medlemsfunktioner getNamn() och getKlass(). Nyckelordet protected betyder att endast klassen själv, och klasser som ärver från klassen har tillgång till egenskapen eller medlemsfunktionen som anges. Public betyder att tillgången till egenskapen eller medlemsfunktionen är publik eller allmän.

Men vad är det för mening med vår nyskapade klass om vi inte kan ge dess egenskaper några värden? För att lösa detta problem lägger vi till två medlemsfunktioner:


public function setNamn($namn) {

$this->namn = $namn;
}
public function setKlass($klass) {

$this->klass = $klass;
}

Variabeln med namnet this är en pekare till objektet själv, precis som i de flesta objektorienterade programmeringsspråk. Nu kan vi skapa ett objekt av typen Elev och ge det värden på följande sätt:


$temp_elev = new Elev();
$temp_elev->setNamn('Oskar Arvidsson');
$temp_elev->setKlass('NVNA3E');

Vi kan skriva ut informationen om vår nya elev på följande sätt:

echo 'Namn: ' . $temp_elev->getNamn() . ' ' .
'\n' . 'Klass: ' . $temp_elev->getKlass();


Konstruktorer

Varje objekt av typen Elev torde väl ha ett namn och en klass, kan man tycka. Finns det något sätt att skapa ett objekt av typen Elev med värden för namn och klass direkt?
- Ja, med hjälp av en konstruktor.


class Elev {

protected $namn;
protected $klass;

public function __construct($namn, $klass) {

$this->namn = $namn;
$this->klass = $klass;
}
public function getNamn() {

return $this->namn;
}
public function getKlass() {

return $this->klass;
}
}

Nu kan vi med hjälp av konstruktorn __construct, som är ett nyckelord i PHP, skapa ett nytt objekt av typen Elev. __construct() är synonymt med Elev(), men vänj dig gärna vid att använda __construct, eftersom det underlättar vid arv (jag kommer inte gå in på arv i den här rtikeln). Nu skapar vi ett nytt objekt på följande sätt:


$temp_elev = new Elev('Oskar Arvidsson',null NVNA3E');


Destruktorer

Vanligtvis klarar PHP själv av att städa bort objektet när skriptet stängs. Allt minne som ett objekt upptar frigörs, anslutningar stängs, och så vidare. Ibland kan det dock vara idé att skapa en egen destruktor, en medlemsfunktion som kallas för att ta bort ett objekt. I PHP har destruktorn det fördefinierade namnet __destruct(). __destruct() kan inte ta några argument och ska inte heller returnerar något värde.

I fallet med klassen Elev finns inte någon jättebra anledning att definiera en konstruktor, därför är exemplet nedan bara ett exempel på hur destruktorn kan fungera.


public function __destruct() {

echo 'Tar bort ' . $this->name . '.';
}

När skriptet stängs kommer PHP nu skriva ut ”Tar bort Oskar Arvidsson.” (förutsatt att värdet på objektets egenskap namn i fråga är just ”Oskar Arvidsson”.


Utskrift av objekt

I PHP finns en inbyggd funktionalitet för utskrift av objekt. Genom att definiera en medlemsfunktion kallad __toString (jämför __construct) kan du som programmerare bestämma hur ett objekt ska skrivas ut. Exempel:


public function __toString() {

return 'Namn: ' . $this->namn . ' ' .
'\n' . 'Klass: ' . $this->klass;
}

Nu är det bara att skriva ut objektet på följande sätt:


echo $temp_elev;

PHP kommer automatiskt att kolla om det i klassen Elev finns någon medlemsfunktion med namnet __toString som inte tar några argument.


Avslutning

Jag hoppas att jag har kunnat väcka ett intresse hos dig för att utnyttja klasser i PHP. Det finns otroligt mycket att lära, och många smarta tillämpningar på området. Naturligtvis går det alldeles utmärkt att skicka mig ett mail eller lämna en kommentar om du har några frågor eller ytterligare funderingar.
Upp

1 Kommentarer


  1. Pelle Johansson
    19 apr 2007

    http://www.derigomedia.com/hack/arkiv/hack20070418.html

Skriv en kommentar på artikeln

Ditt betyg på artikeln



Kommentar:





Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 155
27 952
271 704
657
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies