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

před 5 lety od David Grudl  

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

  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 5 lety
  2. Na fóru ti už odpověděli https://forum.nette.org/…na-php-7-4-1

    před 5 lety
  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 5 lety
  4. Beru zpět. Měl jsem protected místo public

    před 5 lety

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