Tek.no

Nyhet

PHP 5.3 er ferdig

Vegard Andreas Larsen
1 Juli 2009 14:46

PHP 5.3 er den siste store oppdateringen av det populære skriptingspråket før PHP 6 kommer. Mange av forbedringene er derfor i påvente av enda større forbedringer som skal komme i PHP 6.

Vi går litt inn i de viktigste nyhetene i denne nyheten, så om du ikke er en PHP-programmerer, er detaljene gjerne ikke så interessante.

Navnerom

Først og fremst har PHP 5.3 støtte for navnerom (namespaces), som skal gjøre det mulig å ha flere klasser med samme navn, så lenge de befinner seg i ulike navnerom. Det gjør det enklere å utvikle biblioteker som ikke påvirker andre biblioteker. Valget av delingstegn for navnerom har vært kontroversiell, siden man endte opp med backslash.

Navnerom settes øverst i en kildefil, og gjelder alle klassene i filen. Du definerer navnerom som følgende:

<?php
namespace Hardware\Artikkel;

class Nyhet { /* implementasjon */ }
class Text { /* implementasjon */ }
?>

Dette oppretter to klasser (

Nyhet

og

Test

) it

Hardware\Artikkel

-navnerommet. For å bruke

Nyhet

-klassen i en annen kildefil er syntaksen da

$variabel = new Hardware\Artikkel\Nyhet();

. Om du befinner deg i samme navnerom trenger du selvsagt ikke prefikse klassenavnet med navnerommet. Navnerom-systemet fungerer stort sett på samme måte som i andre programmeringsspråk.

Sen statisk binding

Om du har brukt statiske klasser som arver fra andre i PHP, har du kanskje kommet borti problemet. Du definerer en funksjon på superklassen, og i den vil du gjerne kalle en metode i subklassen. Uten å vite navnet på klassen har dette vært svært vanskelig i PHP til nå.

Problemet løses av sen statisk binding, som introduserer en ny måte å bruke nøkkelordet

static

på. Det fungerer på samme måte som

self

, men henviser til klassen som ble kalt under kjøring, ikke klassen metoden er definert i.

<?php
class Super
{
public static function Foo()
{
echo __CLASS__;
}

public static function Test()
{
static::who();
}
}

class Sub extends Super
{
public static function Foo()
{
echo __CLASS__;
}
}
Super::Test();
Sub::Test();
?>

Eksempelet over vil skrive ut først

Super

, så

Sub

. Om vi hadde brukt nøkkelordet

self

i

Test

-funksjonen, ville utskriften vært

Super

to ganger.

Goto

Nei, vi tuller ikke. Goto-konstrukter har blitt sterkt kritisert opp gjennom tidene, og det er ikke uten grunn. PHPs

goto

er ikke en fullverdig versjon av originalen her, men er begrenset til at den ikke kan hoppe ut av skopet.

Det betyr at du ikke kan bruke goto til å hoppe inn og ut av funksjoner, eller inn i looper eller switch-struktur. Du kan derimot bruke goto til å hoppe ut av de to sistnevnte. Et eksempel direkte fra PHP-manualen:

<?php
goto a;
echo 'Foo';

a:
echo 'Bar';
?>

Anonyme funksjoner

PHP 5.3 får støtte for ekte anonyme funksjoner, ofte kjent som closures. Dette lar deg opprette funksjoner som ikke har et navn i seg selv. Det gjør det mulig å sende inn f.eks. en sammenligningsfunksjon til en sorteringfunksjon uten at du trenger å navngi sammenligningsfunksjonen.

Dette betyr at du også svært enkelt kan lagre funksjoner i variabler. Denne funksjonaliteten har lenge vært tilgjengelig i andre programmeringsspråk, og gjør en rekke oppgaver mye enklere.

<?php
$hemmelig = function($parameter)
{
echo $parameter,"\n";
};
$hemmelig("Hardware.no");
?>

Andre ting

Det er komt to nye magiske klassemetoder,

<a href="http://no.php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.methods">__callStatic</a>

og

<a href="http://no.php.net/manual/en/language.oop5.magic.php#language.oop5.magic.invoke">__invoke</a>

. En ny måte å angi strenger på er støttet, kalt Nowdoc, og er egentlig Heredoc uten varibelsubstitusjon.

En kortversjon av ternær-operatoren er nå tilgjengelig, og gjør det enklere å for eksempel lage en default-verdi:

<?php
$a = ($_POST['data'] ? $_POST['data'] : 'default');
$b = ($_POST['data'] ?: 'default');
?>

Les mer

Det er snakk om ganske mange flere endringer i PHP 5.3, og dersom du er en utvikler som jobber med dette til daglig, anbefaler vi deg å lese gjennom listen over nye egenskaper, som også gir mange detaljer om de nye egenskapene.

Du kan laste ned PHP 5.3 fra PHP.net.

Les også
Ruby on Rails 3 nær lansering
Les også
PHP-programmerere foretrekker Windows
Les også
Nytt programmeringsspråk fra Google
Les også
Verktøy for webutviklere
Les også
Microsoft får Web-applikasjonsplattform
Les også
PHP-samarbeid mellom IBM og Zend
Les også
Avslører over 30 PHP-feil
Les også
Dårlig sikkerhet hos PHP-utviklere
annonse

Les også