Nette plně podporuje PHP 7.4. Co to znamená?

před 5 měsíci od David Grudl     edit

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 (RSS)

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

    před měsícem
  2. Na fóru ti už odpověděli https://forum.nette.org/…na-php-7-4-1

    před měsícem
  3. 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

    před měsícem
  4. Beru zpět. Měl jsem protected místo public

    před měsícem

Chcete-li odeslat komentář, přihlaste se