on Aug 8th, 2008PHP 5.3 Alpha äntligen här!

För nästan exakt en vecka sedan släpptes första alpha-versionen av nya PHP 5.3. Denna version har mycket genemsamt av vad vi kommer att få se i PHP 6, till exempel namnrymder vilket är guld värt för oss som programmerar objektorienterat, men även för er som återanvänder klasser, som kanske råkar heta samma sak. Det är enkelt löst med namespaces.

För att deklarera en viss namnrymd skriver man helt enkelt:

namespace CMS;

Class User()
{
    function authenticate()
    {

    }
}

namespace BLOG;

Class User()
{
    function authenticate()
    {

    }
}

Det innebär att vi skulle kunna deklarera flera klasser med samma namn, så länge de ligger i olika namnrymder. Sedan kan vi anropa dem enligt följande:

CMS::User::authenticate();
BLOG::User::authenticate();
 

eller

use CMS::User as CMSUser;
use Blog::User as BlogUser;

$cmsUser = new CMSUser();
$blogUser = new BlogUser();
 

En annan spännande feature i nya PHP-versionen är alternativet att använda mysqlnd istället för libmysql. Fördelen med mysqlnd är att det är bundet med php på c-nivå, istället för libmysql som är löst kopplat, eftersom det kan användas till vilket projekt som helst. Eftersom mysqlnd är kopplat till php på c-nivå följer det även PHPs inbyggda minneslimitering? (memory limit).

Vidare fördelar med mysqlnd är att det inte håller dubbla rader av resultat från en query, vilket framför allt sparar mer minne.

För mer information om mysqlnd rekommenderar jag läsning på PHP-Mysqlnd wikin för projektet.

PHP 5.3 stöder även late static binding, vilket innebär att ärvda klasser också övertar statiska metoder.

Som det är i PHP just nu:

<?php
Class ParentClass
{
    public static function Init()
    {
        self::HelloWorld();
    }
   
    public static function HelloWorld()
    {
         echo "Hello world from Parent!";
    }
}

Class ChildClass Extends ParentClass
{
    public static function HelloWorld()
    {
         echo "Hello world from Child!";
    }
}

ChildClass::Init();
?>
 

Här kan man absolut förvänta sig att Init() skall skriva ut Hello world from Child!, så är dock inte fallet. Problemet är att PHP med ::self kommer att länka till den klassen där methoden deklarerades.

I PHP 5.3 använder man

static::Init(); istället för self::Init();
 

Även ett flertal intressanta datumfunktioner är tillagda:

  • date_add()
  • date_sub()
  • date_diff()
  • date_parse_from_format()
  • date_create_from_format()
  • date_get_last_errors()

samt även motsvarigheten till ucfirst() – lcfirst().

Något som också är väldigt uppskattat är nya SPL-implementationer:

SPL

för oss som använder det.

För en fullständig lista på uppdateringar hänvisar jag till PHP 5.3 CHANGELOG.

Det som kan tyckas vara negativt med PHP 5.3 är operativsystem äldre än Windows 2000 t.ex Windows 98 inte längre stöds.

Det enda som återstår är nu att alla wamp-xampp-lampp-paket samt webbhotell uppdaterar till 5.3, men det lär väll ta 2-3 år som med alla andra versioner.

Rekommenderas:
tidredovisning

RSS

Lämna en kommentar