Нужна срочная помощь с сайтом?Опишите нам проблему, и мы ответим как можно быстрее.

PHP vēsture: no pirmsākumiem līdz aktuālajai versijai 8.3

PHP ir viena no populārākajām programmēšanas valodām tīmekļa izstrādē. Kopš savas izveides 1994. gadā tā ir nogājusi garu ceļu, no vienkārša rīka dinamiskām tīmekļa lapām pārtopot par jaudīgu, augstas veiktspējas un universālu programmēšanas valodu. Apskatīsim galvenos tās attīstības posmus un detalizēti pārrunāsim būtiskākās izmaiņas versijās 8.0, 8.1, 8.2 un 8.3.


PHP attīstības posmi

1995: PHP/FI 1.0 dzimšana

PHP 1994. gadā izveidoja dāņu programmētājs Rasmuss Lerdorfs kā Perl skriptu kopumu, lai izsekotu sava CV apmeklējumus tīmekļa vietnē. 1995. gadā viņš izlaida pirmo PHP/FI (Personal Home Page/Forms Interpreter) versiju, kas atbalstīja HTML formas un mijiedarbību ar datubāzēm.

1998: PHP 3.0 un revolūcija valodā

Ar Zeva Suraski un Endija Gutmansa palīdzību PHP tika pilnībā pārrakstīta, kā rezultātā 1998. gadā tika izlaista PHP 3.0 versija. Tajā tika ieviests jaunais Zend Engine dzinējs, kas ievērojami uzlaboja valodas veiktspēju un elastību. PHP 3 kļuva par pirmo plaši izmantoto valodas versiju, kas atbalstīja objektorientēto programmēšanu.

2000: PHP 4.0 un Zend Engine parādīšanās

PHP 4 ar Zend Engine 1.0 tika izlaista 2000. gadā, piedāvājot uzlabotu veiktspēju un sesiju atbalstu, kas padarīja PHP piemērotāku sarežģītu dinamisku tīmekļa lietojumprogrammu izveidei.

2004: PHP 5.0 un jauna OOP ēra

PHP 5, kas tika izlaista 2004. gadā, ieviesa pilnīgu objektorientētās programmēšanas atbalstu, uzlabotu mijiedarbību ar datubāzēm, izmantojot PDO (PHP Data Objects), un jaunu izņēmumu apstrādes modeli.

2015: PHP 7.0 un ievērojams veiktspējas uzlabojums

2015. gadā PHP 7.0 piedāvāja jaunas paaudzes Zend Engine 3.0, kas divkāršoja koda izpildes ātrumu un pievienoja atbalstu funkciju argumentu un atgriežamo vērtību tipizēšanai.


PHP 8: galvenie jaunumi

PHP 8.0, kas tika izlaista 2020. gada novembrī, kļuva par nozīmīgu soli uz priekšu, pateicoties daudzajām jaunajām funkcijām un uzlabojumiem, kas padarīja valodu ērtāku, produktīvāku un izteiksmīgāku. Galvenie jaunumi ietver:

1. JIT kompilācija (Just-in-time)

JIT kompilators ļauj izpildes laikā dinamiski kompilēt daļu baitkoda mašīnkodā. Tas ir īpaši noderīgi skaitļošanas ziņā intensīviem uzdevumiem, piemēram, zinātniskiem aprēķiniem vai mašīnmācīšanai. Tomēr parastās tīmekļa lietojumprogrammas JIT ietekmē mazāk.

Piemērs:

<?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 (atbilstības izteiksme)

match ir uzlabota operatora switch versija, kas izmanto stingru tipizēšanu, neprasa operatorus break un var tieši atgriezt rezultātu.

match lietošanas piemērs:

<?php
$status = 404;

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

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

3. Nosauktie argumenti

Nosauktie argumenti ļauj nodot funkciju parametrus pēc nosaukuma, padarot funkciju izsaukumus saprotamākus un ērtākus.

Piemērs:

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

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

4. Union Types (apvienotie tipi)

Apvienotie tipi ļauj norādīt vairākus tipus argumentiem un atgriežamajām vērtībām.

Piemērs:

<?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

Šis jaunievedums ļauj automātiski piešķirt objekta īpašības no konstruktora argumentiem, tādējādi samazinot koda apjomu.

Piemērs:

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

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

6. Kļūdas nederīgām norādēm

PHP 8 ģenerē kļūdas, piekļūstot neeksistējošām masīvu atslēgām vai objektu īpašībām, kas palielina koda uzticamību.

Piemērs:

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

PHP 8.1: svarīgi jaunumi

PHP 8.1, kas tika izlaista 2021. gada novembrī, pievienoja daudzas svarīgas funkcijas un uzlabojumus, piemēram, uzskaitījumus, šķiedras un readonly īpašības.

1. Enums (uzskaitījumi)

Uzskaitījumi (enum) ļauj definēt fiksētu vērtību kopu, kas tiek izmantota kodā.

Piemērs:

<?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. Šķiedras (Fibers)

Šķiedras nodrošina iespēju PHP veidot kooperatīvas plūsmas, tādējādi vienkāršojot asinhrono programmēšanu.

Piemērs:

<?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

Īpašības readonly var inicializēt tikai objekta izveides laikā, pēc tam tās kļūst nemaināmas.

Piemērs:

<?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: uzlabojumu turpinājums

PHP 8.2, kas tika izlaista 2022. gada decembrī, nodrošināja papildu sintakses uzlabojumus un jaunas iespējas.

1. Readonly klases

PHP 8.2 ļauj deklarēt klases kā readonly, kas automātiski padara visas to īpašības nemaināmas.

Piemērs:

<?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. Dinamisko īpašību novecošana

Dinamiskās īpašības, kas izveidotas ārpus klases deklarācijas, tagad ir atzīmētas kā novecojušas, kas palīdz izvairīties no kļūdām.

Piemērs:

<?php
class User {}

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

3. Null, false un true atbalsts apvienotajos tipos

Tagad apvienotajos tipos kā tipus var norādīt null, false un true.

Piemērs:

<?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: jaunākie uzlabojumi

PHP 8.3, kas tika izlaista 2023. gada novembrī, turpināja uzlabot valodu, koncentrējoties uz drošības palielināšanu un jaunu noderīgu funkciju pievienošanu.

1. json_validate

Pievienota jauna funkcija json_validate, kas ļauj pārbaudīt JSON virknes korektumu, to nedekodējot.

Piemērs:

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

2. Typed Class Constants

Tagad klasēs esošajām konstantēm var deklarēt tipus, kas pastiprina tipizēšanu.

Piemērs:

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

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

Secinājums

PHP 8.0 un jaunākās versijas ir ieviesušas daudzus uzlabojumus, kas būtiski palielinājuši valodas veiktspēju un izteiksmīgumu. Sākot ar JIT kompilāciju un tādiem jaunievedumiem kā match, apvienotie tipi un šķiedras, līdz pat jaunākajiem PHP 8.3 uzlabojumiem — valoda turpina attīstīties un pielāgoties mūsdienu tīmekļa lietojumprogrammu prasībām, saglabājoties par būtisku rīku miljoniem izstrādātāju visā pasaulē.

Visiem maniem abonentiem ir lieliskas ziņas! 🎉 Apmaksājot JetBrains produktus, varat izmantot īpašo promocijas kodu “Asgru24” un saņemt 25% atlaidi jebkuram produktam! Nepalaidiet garām iespēju ietaupīt, iegādājoties labākos izstrādes rīkus.


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