Webspire

Administrační systém

Upgrade balíčků na PHP 7.2

Proběhl velký update všech balíčků tak, aby podporovaly PHP verze 7.2.

PHP 7.2

Nejzásadnější změny s přechodem z PHP 7.0 na PHP 7.2 a důsledky

  • nový datový typ object, nové kličové slovo "object"
  • kvůli object klíčovému slovu veškeré použití tříd \Nette\Object a Object v administraci již není možné. Je nutno používat Nette SmartObject/LegacyObject resp. RsObject
  • return typehint a návratový typ void - mnoho metod tříd napříč celým frameworkem bylo rozšířeno o return typehinty a typehinty parametrů. Díky tomu je kód striktnější. Může mít však vliv na projektové přepisy v případě povýšení projektů.
  • nullable types - možnost vynutiit datový typ, avšak s explicitním povolením null hodnoty
  • iterable datový typ - možnost vynutit datového typu, která je iterovatelná (pole, iterátor, generátor)
  • nw7 balíček byl kompletně pokrytý deklarací declare(strict_type=1). Může mít však vliv na projektové přepisy v případě povýšení projektů. 

Pro plný seznam novinek viz PHP 7.1 New features a PHP 7.2 New features

 

nové verze knihoven

PHPUnit 7.3

  • balíček test-tool, resp. i veškeré testy balíčků využívají nejnovejší verzi knihovny PHPUnit
  • Nejzásadnější zmena se týká především namespaců, které v jsou v nejnovejší verzi PHPUnit. V rámci povýšení testů stačí podtpodtržítka nahradit za zpětné lomítka a v 90% případů vše opět funguje (\PHPUnit_Framework_TestCase -> \PHPUnit\Framework\TestCase)

Tracy 2.5

  • Povýšení z verze 2.4 na verzi 2.5 - viz changelog
  • odstraněny nepoužívané metody \Tracy\Debugger::logWarning|logError|logInfo - ekvivalen je volání \Tracy\Debugger::log() a definice úrovně logování skrz 2. parametr
  • pomocné metody přesunuty z \Tracy\Debugger do \Inspire\NW7\Util\Tracy\TracyHelper

dibi v4

  • přibyly namespacy (\DibiConnection -> \Dibi\Connection)
  • menší změna v rozhraní driverů (může mít vliv, pokud člověk na projektu používal vlastní dibi driver - např. kvůli MSSQL konektorům apod.)

webspire

Kromě úprav spojenách s přechodem na nejnovější PHP a verze knihoven, došlo i ve webspire balíčcích k úpravám a refaktoringům.

Mezi ty nejvýznamnější úpravy patří:

  • Refaktoring FilteredListService
    • bez událostí, bez nutnosti dodrže názvy komponent, prefixy apod. - zásadní zjednodušení a ztransparentnění napojení služby na filtry, řazení a stránkování
    • je nutné setovat paginator, filter, řadidlo (má settery) explicitně
    • ... a setovat je ve vhodný okamžik (action/beforeRender) do FilteredList
  • Refaktoring header-control balíčku 
    • refaktoring HeaderControlu - vytažení logiky do dílčích služeb a rozhraní 
    • oddělení HeaderControlu a IHeaderService - control již neimplementuje IHeaderService rozhraní, ale pouze jej využívá.
    • IHeaderService slouží jako fasáda pro rozhraní jiných, dílčích služeb (pro nastavení titulku, seo titulků, Open Graph apod.)
  • Refaktoring a úpravy v catalog-module balčku
    • rozpad CatalogPresenteru na dva - CategoryPresenter (výpis produktů kategorie) a ProductPresenter (detail produktu)
    • zásadní refaktoring a zjednodušení routování - nasazen klasický entitní router a vytvoření rozhraní pro oba typy továren routerů (katalogového a produktového do rozhraní ICategoryRouterFactory resp. IProductRouterFactory). Konfigurace routerů se děje na úrovní modulových setting.neon (stejně, jako se to dělá např. u article-module balíčku).
    • ProductCartItemFactory přebírá v základní imlementaci při vytváření položky košíku cenu produktu
    • nový modul pro definice daňových sazeb (mod_vat). Produkt má nově vazbu (FK) na daň. hladinu
  • Změny v nw7-admin balíčku
    • nahrazení prefixované, staré verze Nette za nejnovější Nette, načítané přes Composer
    • odstranění vyhození exception při nenalezení třídy během autloadingu
    • přejmenování Object na RsObject
  • DatabaseNumberGenerator - v balíčku order-module přibula nová třída pro generování čísel objednávek skrz DB proceduru
  • Nasazení PHPStan na několik balíčků
    • agreement-evidence-control, article-module, catalog-module, cron-module, dynamic-parameters-control, header-control, mail-message, nw7-util
  • Úpravy v nw7-text-webu a nw7-init-repo
    • nasazení PHPStanu
    • výchozí uložiště pro session je Redis
###message