Kas vajad saidiga kiiret abi?Kirjelda probleemi ja vastame nii kiiresti kui võimalik.

PHP ajalugu: loomisest kuni praeguse versioonini 8.3

PHP on üks populaarsemaid programmeerimiskeeli veebiarenduses. Alates loomisest 1994. aastal on see läbinud pika tee, arenedes lihtsast dünaamiliste veebilehtede tööriistast võimsaks, suure jõudlusega ja universaalseks programmeerimiskeeleks. Vaatleme selle arengu peamisi etappe ning käsitleme üksikasjalikult versioonide 8.0, 8.1, 8.2 ja 8.3 olulisemaid muudatusi.


PHP arengu etapid

1995: PHP/FI 1.0 sünd

PHP lõi Taani programmeerija Rasmus Lerdorf 1994. aastal Perl-skriptide kogumina, et jälgida tema veebisaidil oleva CV külastusi. 1995. aastal avaldas ta PHP/FI (Personal Home Page/Forms Interpreter) esimese versiooni, mis toetas HTML-vorme ja suhtlust andmebaasidega.

1998: PHP 3.0 ja revolutsioon keeles

Zeev Suraski ja Andi Gutmansi abiga kirjutati PHP täielikult ümber, mille tulemusena ilmus 1998. aastal PHP 3.0. Selles võeti kasutusele uus Zend Engine, mis suurendas märkimisväärselt keele jõudlust ja paindlikkust. PHP 3 oli keele esimene laialdaselt kasutatud versioon, mis toetas objektorienteeritud programmeerimist.

2000: PHP 4.0 ja Zend Engine’i tulek

PHP 4 koos Zend Engine 1.0-ga ilmus 2000. aastal, pakkudes paremat jõudlust ja seansside tuge, mis muutis PHP sobivamaks keerukate dünaamiliste veebirakenduste loomiseks.

2004: PHP 5.0 ja OOP uus ajastu

2004. aastal välja antud PHP 5 tõi kaasa täieliku objektorienteeritud programmeerimise toe, parema suhtluse andmebaasidega PDO (PHP Data Objects) kaudu ning uue erindite käsitlemise mudeli.

2015: PHP 7.0 ja märkimisväärne jõudluse paranemine

2015. aastal pakkus PHP 7.0 Zend Engine 3.0 uut põlvkonda, mis kahekordistas koodi täitmiskiiruse ning lisas funktsioonide argumentide ja tagastusväärtuste tüüpimise toe.


PHP 8: peamised uuendused

2020. aasta novembris välja antud PHP 8.0 oli oluline samm edasi tänu paljudele uutele funktsioonidele ja täiustustele, mis muutsid keele mugavamaks, jõudlusvõimelisemaks ja väljendusrikkamaks. Peamised uuendused on järgmised:

1. JIT-kompileerimine (Just-in-time)

JIT-kompilaator võimaldab käitamise ajal dünaamiliselt kompileerida osa baitkoodist masinkoodiks. See on eriti kasulik arvutusmahukate ülesannete puhul, nagu teaduslikud arvutused või masinõpe. Tavapärastele veebirakendustele on JIT-i mõju siiski väiksem.

Näide:

<?php
function fibonacci($n) {
    if ($n == 0) return 0;
    if ($n == 1) return 1;
    return fibonacci($n-1) + fibonacci($n-2);
}

echo fibonacci(30);
?>

2. Match Expression (mustrite sobitamine)

match on operaatori switch täiustatud versioon, mis kasutab ranget tüüpimist, ei nõua break operaatoreid ja võib tulemuse otse tagastada.

match’i kasutamise näide:

<?php
$status = 404;

$message = match ($status) {
    200 => 'OK',
    404 => 'Not Found',
    500 => 'Internal Server Error',
    default => 'Unknown Status',
};

echo $message;  // Выведет: Not Found
?>

3. Nimega argumendid

Nimega argumendid võimaldavad funktsioonide parameetreid edastada nime järgi, muutes funktsioonikutseid selgemaks ja mugavamaks.

Näide:

<?php
function greet(string $name, string $greeting = 'Hello') {
    echo "$greeting, $name!";
}

greet(name: 'John', greeting: 'Welcome');  // Выведет: Welcome, John!
?>

4. Union Types (ühendtüübid)

Ühendtüübid võimaldavad määrata argumentidele ja tagastusväärtustele mitu tüüpi.

Näide:

<?php
function processInput(int|string $input) {
    if (is_int($input)) {
        return $input * 2;
    } else {
        return strtoupper($input);
    }
}

echo processInput(10);  // Выведет: 20
echo processInput('hello');  // Выведет: HELLO
?>

5. Constructor Property Promotion

See uuendus võimaldab objektile omadusi automaatselt konstruktori argumentidest määrata, vähendades koodi hulka.

Näide:

<?php
class Point {
    public function __construct(
        public int $x,
        public int $y
    ) {}
}

$point = new Point(3, 5);
echo $point->x;  // Выведет: 3
?>

6. Vead valede viidete korral

PHP 8 genereerib vead olematutele massiivivõtmetele või objekti omadustele juurdepääsul, mis suurendab koodi töökindlust.

Näide:

<?php
$data = [];
echo $data['key'];  // Fatal Error: Uncaught Error: Undefined array key "key"
?>

PHP 8.1: olulised uuendused

2021. aasta novembris välja antud PHP 8.1 lisas palju olulisi funktsioone ja täiustusi, näiteks loendid, fiibrid ja readonly-omadused.

1. Enums (loendid)

Loendid (enum) võimaldavad määratleda fikseeritud väärtuste kogumi, mida koodis kasutatakse.

Näide:

<?php
enum Status {
    case Pending;
    case Completed;
    case Failed;
}

function handleStatus(Status $status) {
    return match ($status) {
        Status::Pending => 'Pending',
        Status::Completed => 'Completed',
        Status::Failed => 'Failed',
    };
}

echo handleStatus(Status::Pending);  // Выведет: Pending
?>

2. Fiibrid (Fibers)

Fiibrid lisavad PHP-sse võimaluse luua kooperatiivseid lõime, mis lihtsustab asünkroonset programmeerimist.

Näide:

<?php
$fiber = new Fiber(function() {
    $value = Fiber::suspend('fiber suspended');
    echo "Resumed: $value\n";
});

echo $fiber->start();  // Выведет: fiber suspended
$fiber->resume('resume value');  // Выведет: Resumed: resume value
?>

3. Readonly Properties

readonly-omadusi saab lähtestada ainult objekti loomisel, pärast mida muutuvad need muutumatuks.

Näide:

<?php
class User {
    public readonly string $name;

    public function __construct(string $name) {
        $this->name = $name;
    }
}

$user = new User('Alice');
// $user->name = 'Bob';  // Ошибка, так как свойство readonly
?>

PHP 8.2: täiustuste jätkumine

2022. aasta detsembris välja antud PHP 8.2 tõi kaasa täiendavaid süntaksi täiustusi ja uusi võimalusi.

1. Readonly-klassid

PHP 8.2 võimaldab deklareerida klasse kui readonly, mis muudab automaatselt kõik nende omadused muutumatuks.

Näide:

<?php
readonly class Product {
    public function __construct(
        public string $name,
        public float $price
    ) {}
}

$product = new Product('Laptop', 1200.00);
// $product->price = 1300.00;  // Ошибка, так как класс readonly
?>

2. Dünaamiliste omaduste deprekeerimine

Dünaamilised omadused, mis luuakse väljaspool klassi deklaratsiooni, on nüüd märgitud aegunuks, mis aitab vigu vältida.

Näide:

<?php
class User {}

$user = new User();
$user->name = 'John';  // Deprecated: dynamic properties are deprecated
?>

3. Nulli, false’i ja true’i tugi ühendtüüpides

Nüüd saab ühendtüüpides tüüpidena määrata null, false ja true.

Näide:

<?php
function test(null|false|string $value): string {
    return $value === null ? 'null' : ($value === false ? 'false' : $value);
}

echo test(null);    // Выведет: null
echo test(false);   // Выведет: false
echo test('test');  // Выведет: test
?>

PHP 8.3: uusimad täiustused

2023. aasta novembris välja antud PHP 8.3 jätkas keele täiustamist, keskendudes turvalisuse suurendamisele ja uute kasulike funktsioonide lisamisele.

1. json_validate

Lisati uus funktsioon json_validate, mis võimaldab kontrollida JSON-stringi korrektsust ilma seda dekodeerimata.

Näide:

<?php
$json = '{"name": "John", "age": 30}';
$is_valid = json_validate($json);
echo $is_valid ? 'Valid JSON' : 'Invalid JSON';
?>

2. Typed Class Constants

Nüüd saab klassides olevatele konstantidele tüüpe deklareerida, mis tugevdab tüüpimist.

Näide:

<?php
class Config {
    public const string NAME = 'Application';
}

echo Config::NAME;  // Выведет: Application
?>

Kokkuvõte

PHP 8.0 ja hilisemad versioonid tõid kaasa palju täiustusi, mis suurendasid märkimisväärselt keele jõudlust ja väljendusrikkust. Alates JIT-kompileerimisest ja uuendustest nagu match, ühendtüübid ja fiibrid kuni PHP 8.3 uusimate täiustusteni areneb keel edasi ning kohandub tänapäevaste veebirakenduste nõuetega, jäädes miljonite arendajate jaoks üle maailma võtmetööriistaks.

Kõigile minu tellijatele on mul suurepärane uudis! 🎉 JetBrainsi toodete eest tasumisel saate kasutada spetsiaalset sooduskoodi “Asgru24” ja saada 25% allahindlust mis tahes tootele! Ärge jätke kasutamata võimalust säästa parimatelt arendustööriistadelt.


👍
❤️
😂
😮
😢
😡
🤔
👏
🔥
🥳
😎
👎
🎉
🤯
🚀
₿
Ξ
Ł
Ð
🌕