Novinky v PHP 7 (1. díl)


Kdo by neznal PHP, nejrozšířenější skriptovací jazyk používaný pro tvorbu webových stránek. Není divu, že nabídka webhostingu je pro PHP nejvyšší. Tento jazyk je jednoduchý na naučení, ale neznamená to, že je vhodný jen na triviální projekty. PHP nabízí kouzla, díky kterým si jej oblíbili i profesionálové.

PHP 7 je již nějakou dobu venku. Ale až teď se setkaly s experimentální nebo plnou podporou u některých webhosterů. Podívejme se na některé vlastnosti, které nové PHP nabízí.

Novinky v syntaxi

1. deklarace skalárních argumentů

Nyní je možné deklarovat typ parametrů funkce, a to ve skalární podobě. Doposud bylo od PHP 5 možné typově deklarovat parametry pomocí názvu třídy, rozhraní a také bylo podporováno array a callable.

<?php
// Coercive mode
function sumOfInts(int ...$ints)
{
    return 
array_sum($ints);
}

var_dump(sumOfInts(2'3'4.1));

Výstupem bude:

int(9)

Typování skalárních typů funguje ve striktním nebo mírnějším režimu. Pokud není zapnut striktní režim, tak PHP automaticky převede argumenty do požadovaného datového typu. Pokud je zapnut striktní režim, tak argumenty již musí být v požadovaném datovém typu, jinak vám to vyhodí chybu.

Striktní typování zapnete pomocí:

<?php
declare(strict_types=1);

...

Vyberte si u nás PHP webhosting

2. deklarace návratového typu

Podobně jako typová deklarace argumentů nyní funguje v PHP 7 deklarace návratového typu funkce. Stačí požadovaný typ přidat za dvojtečku za deklaraci funkce.

<?php

function arraysSum(array ...$arrays): array
{
    return 
array_map(function(array $array): int {
        return 
array_sum($array);
    }, 
$arrays);
}

print_r(arraysSum([1,2,3], [4,5,6], [7,8,9]));

Narozdíl od javadocovského @return type toto typ doopravdy kontroluje. Nastavení striktního typování funguje stejně jako u deklarace skalárních argumentů pomocí strict_types.

3. Speciální hodnota při NULL

Určitě jste v kódu často ošetřovali, co se má vrátit, když proměnná nabývá hodnoty null nebo pokud není definována (if (isset($var...). PHP 7 přišlo se syntaktickým cukříkem, který může pomoct kód zjednodušit. Sledujte tu parádu:

<?php
// Fetches the value of $_GET['user'] and returns 'nobody'
// if it does not exist.
$username $_GET['user'] ?? 'nobody';
// This is equivalent to:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

// Coalescing can be chained: this will return the first
// defined value out of $_GET['user'], $_POST['user'], and
// 'nobody'.
$username $_GET['user'] ?? $_POST['user'] ?? 'nobody';
?>

4. Konstanty typu array

V tomto ohledu PHP 7 napravuje to, co bylo v předchozích verzích zakázáno. Vytvoření konstanty typu array zní logicky. Doposud to bylo možné jen uvnitř třídy pomocí deklarace const.

<?php
define
('ZVIRATA', [
    
'pes',
    
'kočka',
    
'vrabec'
]);

echo 
ZVIRATA[1]; // výstupem bude "kočka"
?>

5. anonymní třídy

Když už to už jde v jiných jazycích, proč by to nešlo tady. A nové PHP si s anonymními třídami hravě poradí.

<?php
interface Logger {
    public function 
log(string $msg);
}

class 
Application {
    private 
$logger;

    public function 
getLogger(): Logger {
         return 
$this->logger;
    }

    public function 
setLogger(Logger $logger) {
         
$this->logger $logger;
    }
}

$app = new Application;
$app->setLogger(new class implements Logger {
    public function 
log(string $msg) {
        echo 
$msg;
    }
});

var_dump($app->getLogger());
?>

Ocení to hlavně profíci, kterým to může ušetřit pár řádek kódu. Začátečníkům však doporučuji držet se konvence třídy pojmenovávat.

Pokračování příště

V příštím díle si to osladíme dalšími syntaktickými cukříky a očekávejte probrání pokročilejších vlastností PHP 7.

Číst druhý díl »


Vydáno: 12.5.2016

Další články


Poslední týden velkých slev na WEDOS

Pozor, až 55% slevy na webhosting, VPS a domény již tento týden budou končit. Slevy byly vydány na počest…

3 příplatkové služby, které se oplatí

Když si zařizujete webhosting, máte ho v základu, zvláště u levnějších variant. Výkonově může být super, ale může vám…

Novinky v PHP 7 (3. díl)

Jak je na tom PHP 7 z hlediska výkonu? A v čem PHP 7 ruší staré pořádky? Čtěte poslední díl ze seriálu PHP 7 a dozvíte…

Novinky v PHP 7 (2. díl)

V pokračování seriálu o PHP 7 si ukážeme další zajímavou funkcionalitu, které nové PHP nabízí. Přečtěte si o nových…

Který server-side jazyk je nejlepší?

Volba programovacího jazyka pro vaši webovou aplikaci je velmi důležitá. Některé z nich jsou vhodné pro začátečníky,…

PorovnejHosting prochází změnou

Po dvou letech fungování PorovnejHosting byl web předělán. Změna se týká v prvé řadě vzhledu, který byl zjednodušen…

Představujeme Savana.cz

Savana.cz je jednou z nejpopulárnějších firem v oblasti webhostingu na českém trhu. Jaké byly jejich začátky a co…

Nejlevnější CZ doména - kde pořídit?

Na doménu s koncovkou CZ nemusíte sahat hluboko do kapsy. Obvyklá cena je kolem 150Kč, ale zde vám poradíme, kde ji…

Slevové kupóny na WEDOS opět k dispozici

Začátkem roku došlo ke znefunkčnění všech slevových kupónů na WEDOS, které byly další den opětovně prodlouženy. Tím se…