<KodLexikon/>
php11 min läsning2026-03-07

PHP webbutveckling: Moderna PHP 8 i praktiken

PHP har förändrats radikalt. Named arguments, fibers, readonly properties och moderna ramverk. Så skriver du PHP som håller 2026.

PHP har ett rykte som det inte förtjänar längre. Språket som en gång var synonymt med spaghettikod har genomgått en fundamental transformation. PHP 8 är snabbt, typsäkert och har funktioner som många "moderna" språk fortfarande saknar.

PHP 8: Det nya normala

Om du inte har tittat på PHP sedan version 5 har du missat en hel del. Här är de viktigaste förbättringarna som förändrar hur du skriver kod.

Named arguments

// PHP 7 - vilken ordning var det nu?
htmlspecialchars($string, ENT_QUOTES, 'UTF-8', false);

// PHP 8 - kristallklart
htmlspecialchars(
    string: $string,
    encoding: 'UTF-8',
    double_encode: false,
);

Readonly properties

class User
{
    public function __construct(
        public readonly int $id,
        public readonly string $name,
        public readonly string $email,
    ) {}
}

$user = new User(1, 'Erik', 'erik@example.com');
// $user->name = 'Anna'; // Fatal error - readonly

Match expressions

// Istället för switch med break-helvete
$status = match($code) {
    200 => 'OK',
    301 => 'Moved Permanently',
    404 => 'Not Found',
    500 => 'Internal Server Error',
    default => 'Unknown',
};

Composer och autoloading

Om du inte använder Composer skriver du inte modern PHP. Punkt. Det löser beroendehantering och autoloading, och det är industristandard sedan tio år tillbaka.

{
    "require": {
        "php": ">=8.2",
        "guzzlehttp/guzzle": "^7.0",
        "monolog/monolog": "^3.0"
    },
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    }
}

PSR-4 autoloading mappas direkt till filstrukturen. App\Models\User hittas i src/Models/User.php. Inga manuella require-anrop.

Typsäkerhet i PHP

Deklarera declare(strict_types=1) i varje fil. Det tvingar PHP att respektera typdeklarationer istället för att tyst konvertera värden.

declare(strict_types=1);

function calculateDiscount(float $price, int $percentage): float
{
    if ($percentage < 0 || $percentage > 100) {
        throw new \InvalidArgumentException(
            "Procent måste vara mellan 0 och 100, fick: {$percentage}"
        );
    }
    return $price * (1 - $percentage / 100);
}

// calculateDiscount("100", 20); // TypeError i strict mode
calculateDiscount(100.0, 20);    // 80.0

PDO för databasåtkomst

Om du använder mysql_query eller mysqli_* direkt gör du det fel. PDO ger dig prepared statements, namngivna parametrar och databasportabilitet.

$pdo = new PDO(
    'mysql:host=localhost;dbname=app;charset=utf8mb4',
    $username,
    $password,
    [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES => false,
    ]
);

// Prepared statement - säkert mot SQL injection
$stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email');
$stmt->execute(['email' => $email]);
$user = $stmt->fetch();

Ramverk: Laravel vs Symfony

Båda är utmärkta val. Laravel har lägre inlärningskurva och fantastisk developer experience. Symfony är mer modulärt och passar bättre för storskaliga enterprise-applikationer. Välj baserat på projektets storlek och teamets erfarenhet.

Sammanfattning

Modern PHP är ett genuint bra programmeringsspråk. Med PHP 8, Composer, och ramverk som Laravel eller Symfony kan du bygga applikationer som är snabba, underhållbara och skalenliga.

PHP-applikationer kräver rätt hosting för att prestera. mehosting.com erbjuder hosting med PHP 8-support, snabba SSD-diskar och automatisk SSL — precis vad du behöver för produktionsmiljöer.

Behöver du hosting för ditt projekt?

Kolla in mehosting.com