Přechod na verzi 2.2
Verze 2.2 přichází s úplně novou infrastrukturou. Původní repozitář Nette byl rozdělen do nových samostatných komponent.
Nette bylo rozděleno do samostatných komponent Application, Bootstrap, Caching, ComponentModel, Nette Database, DI, Finder, Forms, Http, Latte, Mail, Neon, PhpGenerator, Reflection, RobotLoader, SafeStream, Security, Tokenizer, Tracy a Utils. Každá komponenta má vlastní repozitář, issue tracker a číslování verzí.
Stále si však můžete stáhnout celý framework nebo jej nainstalovat pomocí Composeru příkazem composer require nette/nette
.
Tracy
Laděnka byla přejmenována na Tracy
, místo názvu Nette\Diagnostics\Debugger
se tedy používá
Tracy\Debugger
. Původní třída je z důvodu zpětné kompatibility stále funkční.
Pokud píšete doplňky, prefix názvů CSS tříd se změnil z nette-
na tracy-
a třída
nette-toggle-collapsed
na dvojici tracy-toggle tracy-collapsed
. Původní třídy jsou u starých
doplňku změněny na nové automaticky.
Latte
Šablonovací systém byl vždy poměrně úzce provázán s dalšími částmi frameworku, zejména třídami z jmenného
prostoru Nette\Templating
. Aby bylo Latte samostatně použitelné, bylo potřeba mu vymyslet nové snadno
použitelné API, které se obejde bez těchto pomocných tříd. A vypadá takto:
$latte = new Latte\Engine; // nikoliv Nette\Latte\Engine
$latte->setTempDirectory('/path/to/cache');
$latte->addFilter('money', function ($val) { return /* ... */; }); // dříve registerHelper()
$latte->onCompile[] = function ($latte) {
$latte->addMacro(/* ... */); // when you want add some own macros, see http://goo.gl/d5A1u2
};
$latte->render('template.latte', $parameters);
// or $html = $latte->renderToString('template.latte', $parameters);
Jak vidíte, Latte si řeší samo načítání šablon a jejich kešování, čímž pádem původní
FileTemplate
a vlastně celý Nette\Templating
z velké míry pozbývá na smyslu existence. Tyto
třídy i nadále fungují a snaží se zajistit kompatibilitu s novým Latte, nicméně jsou zavržené. Ze stejného důvodu
jsou zavržené i třídy Nette\Utils\LimitedScope
, Nette\Caching\Storages\PhpFileStorage
a služba
templateCacheStorage
.
Naopak Application přináší vlastní třídu Template
(nahrazující FileTemplate a zajišťují kompatibilitu)
a továrnu TemplateFactory
, která rozšiřuje možnosti, jak v presenterech a komponentách pracovat se
šablonami.
Ostatní
Třídy Nette\ArrayHash
, ArrayList
, DateTime
, Image
a
ObjectMixin
jsou nyní součástí balíčku Utils
, proto i jejich namespace byl změněn z
Nette
na Nette\Utils
. Obdobně Nette\Utils\Neon
se stalo součástí balíčku
Neon
a bude mít namespace Nette\Neon\Neon
. Aby změna byla transparentní, vytváří se pro tyto a
některé další třídy tiše aliasy. Aliasy ostatních tříd vytváří Nette Loader spuštěný v loader.php
a
vypisuje přitom varování (abyste mohli svůj kód upravit).
Zavržena (tj. stále funguje, jen vyhodí E_USER_DEPRECATED) je třída Nette\Utils\MimeTypeDetector
, která od
PHP 5.3 není potřeba, neboť ji plně nahrazuje rozšíření Fileinfo (pod Windows jej nezapomeňte zapnout v php.ini).
Byla zrušena podpora anotace @serializationVersion
a dohledávání tříd pro vlastní anotace – tyto věci
nebyly známé ani používané, ale měly negativní vliv na výkon.
A nakonec, chybné odkazy v šabloně nyní začínají hashem, tj. místo error:...
se vypisuje
#error:
, aby když na takový odkaz omylem kliknete, browser nevypsal strašidelnou hlášku. Upravte si proto CSS.
Novinky
Formuláře nyní přenášejí parametr do
v POST datech, takže nebude strašit v URL. Přibyly nové
validátory Form::MIN
a Form::MAX
. A do funkcí obsluhující událost onSuccess
se nyní
jako druhý parametr předávají hodnoty formuláře, takže ušetříte psaní $values = $form->getValues()
.
V databázi přibyla nová funkce fetchAssoc(). Můžete se podívat na pár příkladů použití v testech.
Anotace @inject
nyní respektují aliasy definované pomocí use
.
Pokud do data-
atributů třídy Html vložíte pole, bude se serializovat do JSONu.
A přibyla nová třída Nette\Security\Passwords
, která řeší hashování hesel (vyžaduje minimálně PHP
5.3.7).
V souboru config.neon
můžete jednotlivým uživatelů definovat také jejich role:
nette:
security:
users:
john:
password: **********
roles:
- manager
- reporter