Nette plně podporuje PHP 7.4. Co to znamená?
Už se jen několikrát vyspíte a bude tu PHP 7.4. Tahle verze je dalším důležitým mezníkem ve vývoji jazyka. Skvělá zpráva je, že framework Nette je na novou verzi důkladně připraven a plně s ní otestován. A pozor, týká se to nejen aktuální verze 3.0, ale i předchozí verze 2.4.
Pokud chcete ihned začít využívat všech
novinek PHP 7.4, jako jsou například typed properties, nic vám v tom
nebrání. Stačí zavolat composer update
Když už jsem zmínil typed properties, jejich podporu najdete i v nové verzi Php Generatoru:
$class = new Nette\PhpGenerator\ClassType('Demo');
$class->addProperty('items')
->setType('array')
->setNullable()
->setInitialized();
echo $class;
Výsledek:
class Demo
{
public ?array $items = null;
}
Nově také můžete anonymní funkce vypisovat ve zkrácené podobě tzv. arrow functions:
$closure = new Nette\PhpGenerator\Closure;
$closure->setBody('return $a + $b;');
$closure->addParameter('a');
$closure->addParameter('b');
echo (new Nette\PhpGenerator\Printer)->printArrowFunction($closure);
Výsledek:
fn ($a, $b) => $a + $b;
Nástroj pro validování uživatelských vstupů, Nette Schema, podporuje typed properties již od příchodu na scénu, což bylo společně s uvedením Nette 3 v dubnu 2019:
class Config
{
public string $dsn;
public ?string $user;
public ?string $password;
public bool $debugger = true;
}
$schema = Nette\Schema\Expect::from(new Config);
A nakonec typed properties můžete použít pro injektování závislostí do presenterů:
class ArticlePresenter extends Nette\Application\UI\Presenter
{
/** @inject */
public Facade $facade;
Jak se na novou verzi PHP těšíte?
Komentáře
Ahoj, po update PHP ze 7.3. na 7.4.1 (asi před týdnem) mi při spouštění věcí v Nette 2.4 vyhazuje tuto hlášku: “Trying to access array offset on value of type bool”. Zkoušel jsem to i na tom nejjednodušším co může být. Na předchozí verzi PHP mi vše chodilo. Checker až na memcache (to se mi zatím nepodařilo opravit) je O.K. Kde mohu prosím hledat chybu?
Na fóru ti už odpověděli https://forum.nette.org/…na-php-7-4-1
Já mám problém v tom , že když použiju inject s public Facade $facade, píše mi to
Typed property App\BasePresenter::$pinAuthenticator must not be accessed before initialization search►
to by mělo být v článku asi vyřešeno
Beru zpět. Měl jsem protected místo public
Chcete-li odeslat komentář, přihlaste se