PHP

**PHP** er eit dynamisk, tolka og laust typa programmeringsspråk hovudsakleg nytta for å utvikla dynamiske nettsider. PHPs syntaks liknar C og Perl. Den vanlegaste implementeringa av PHP er ein fri og open versjon skriven i C og distribuert av The PHP Group via php.net og SourceForge. Ein annan fri og open implementasjon, som mogleggjer kompilering av PHP-kode til maskinkode, er utvikla av Roadsend Inc. 

PHP vert distribuert under PHP-Lisensen.

## Historie
I 1995 skreiv Rasmus Lerdorf eit sett skript i Perl for å halde auge med treffstatistikken på hans CV som låg tilgjengeleg på Internett. Seinare skreiv han om pakken i C, og PHP 1 vart utgjeven det same året under open kjedekode lisensen GPL (PHP1 finn ein i PHPs museum). Pakken vart kalla *Personal Homepage Tools*, og ei lita gruppe samla seg om prosjektet.

Da PHP 2 – kalla PHP/FI (*Form Interpreter*) – kom, vart ein del nye ting lagt til, som til dømes støtte for kommunikasjon mot databasear. Språket likna no litt på Perl, men med ein mindre konsistent og meir avgrensa syntaks og mindre funksjonalitet. Seinare slutta Andi Gutmans og Zeev Suraski seg til prosjektet og skreiv om PHP frå botnen av. Resultatet vart PHP 3, som mellom anna var mykje raskare enn dei tidlegare versjonane. Samtidig endra ein kva PHP stod for, til *PHP*: *H*ypertext *P*reprocessor, eit rekursivt akronym.

PHP opparbeidde seg etter kvart ein stor brukarbase, og vart etter kvart sett på som ein standard-installasjon på fleire av vevtenarane på Internett. Så kom PHP 4 med den nye *Zend Engine*, som ligg til grunn for sjølve språket. Den versjonen som er støtta offisielt i dag (november 2009), er PHP 5.1.3.

## Versjonar av PHP
Fyrste utgåva av PHP4 kom i Mai 2000, og har vore under utvikling heilt til siste versjon 4.4.9 vart slept den 07.08.2008. Denne utgåva markerte PHP4s livssyklusslutt.

PHP5 hadde sin fyrste stabile versjon 13 juli 2004, og introduserte betre støtte for objektorientert programmering og SimpleXML for enklare manipulering av XML. Neste versjon, PHP 5.1 introduserte eit nytt grensesnitt for generisk kommunikasjon med databaser for å gjera det enklare å kunne støtta fleire ulike databasesystem. PHP 5.2 introduserte omfattande forbetringar innan minnehandtering som forbetra ytinga og ressursbruk i forhold til eldre versjonar. 

For tida, per november 2008, er PHP 6 framleis under utvikling. Denne versjonen vil mellom anna innehalda støtte for unicode, namnerom og innebygd bytecode-cache.

## Popularitet og kritikk
PHP er utvilsamt populært, og held ennå stand mot språk som først i nyare tid har blitt populære å nytte for nettet, som til dømes Ruby&nbsp;– med Ruby on Rails&nbsp;– og Python med rammeverket Django.

Fyrste stabile versjon av PHP 5 vart sleppt i Juli 2004, men ein stor del av brukarbasen har framleis ikkje migrert til nyaste versjon, fra PHP4. PHP 5 har kritisert mellom anna for å bryte støtte for program utvikla for PHP 4.x, sjølv om mange meiner at dette ikkje er korrekt. Andre har retta kritikken mot PHPs dårlege støtte for objektorientert programmering. Støtte for nokre av konsepta innan objektorientert programmering vart lagt til i PHP 3 og 4. Før PHP5 har støtta for objektorientert programmering vore svært mangelfull, men mykje av dette har blitt retta på i PHP5.

## Bruksområde
Sjølv om ein finn grensesnitt mot ulike løysningar for grafiske brukargrensesnitt, brukar ein PHP som oftast til utvikling av underliggande program på dynamiske nettsider, den delen av ein applikasjon som behandlar informasjonen på tenaren og sender den til klienten.

PHP har etter kvart fått støtte for mange ulike databasesystem, manipulering av bilete (via ImageMagick eller GD), filhandtering, XML, handtering av tekst, PDF og så vidare. Eksempelsvis MediaWiki, som er applikasjonen som Wikipedia køyrer på, er i all hovudsak utvikla i PHP.

Eksempel på applikasjonar som ofte blir skrivne i PHP:
* Facebook er i all hovudsak skriven i PHP
* Diskusjonsforum, f.eks. phpBB og VBulletin
* Bloggar, f.eks. Wordpress og Textpattern
* Nettsamfunn
* Ulike nyheitstenester
* Logging av data
* Statistikk for nettsider
* Innhaldsstyringssystem (CMS), til dømes Drupal, Joomla! og PHP-Nuke

Kombinasjonen '''L'''inux, '''A'''pache, '''M'''ySQL, **P**HP vert ofte kalla LAMP, og har blitt eit utbreitt uttrykk for denne samlinga av fri programvare som til saman er alt som trengst for å driva ein webstad (ein vevtjenar).

Alternativt kan ein nytta kombinasjonen '''W'''indows, **A**pache, **M**ySQL, **P**HP, WAMP.

## Syntaks
Ei PHP-fil, *filnamn.php*, kan innehalda både PHP-sekvensar og annan tekst, som t.d. HTML.
PHP-kode må skrivast innanfor særskilde merkje slik at Apache-programmet skjønar at dette skal tolkast før det vert skrive ut. Ein skriv:
:
```php
<?php ?>
```

PHP verte lese i linjer og kvar linje kan seia noko om variablar, funksjonar med og utan parametrar, kommentarar mm.

## Døme

```php
<?php
//dette er ein kommentar på éi linje

/* Denne kommentaren går
over fleire linjer */

print "Dette er ein funksjon utan parametrar"; //Alle funksjonar må avsluttast med semikolon

$var = 'stein'; //Her definerer vi ein variabel, som sidan kan nyttast i heile php-dokumentet.

if($var = 'tre') //Her vert det gjort ein logisk test og køyrer funksjonen innanfor råmene under dersom SANN
{
echo "Variabelen er 'tre'";
}
else // og om testen over skulle vera USANN køyrer denne koden.
{
echo "variabelen er noko anna";
}
?>
```

### [[Hallo]]

```php
<?php
echo "Hallo!";
?>
```

Eller

```php
<?php
print "Hallo!";
?>
```

Både «print» og «echo» er innebygde funksjonar («language constructs») for å skriva ut data.
### [[Objektorientert programmering|Objekt Orientering]]

```php
Class Person
{

   public $fyrst;
   public $sist;

   public function __construct($f,$l)
   {

       $this->fyrst = $f;
       $this->sist = $l;

   }

   public function helsing()
   {

       return "Hei, eg heiter {$this->fyrst} {$this->sist}.";

   }

   public function statiskHelsing($fyrst, $sist)
   {

       return "Hei, eg heiter $fyrst $sist.";

   }

}

$han = new Person('Ivar','Aasen');
$ho = new Person('Hulda','Garborg');

echo $han->helsing(); // sender ut "Hei, eg heiter Ivar Aasen."
echo '<br />';
echo $ho->helsing(); // sender ut "Hei, eg heiter Hulda Garborg."
echo '<br />';
echo Person::statiskHelsing('Ivar','Aasen'); // sender ut "Hei, eg heiter Ivar Aasen."
```


## Kjelder

**Denne artikkelen bygger på «[[:nb:PHP|PHP]]» frå ,  den 27. november 2009.*  

## Bakgrunnsstoff

*