Aggiornamento
*************
Aggiornamento alla versione 4.0
===============================
La versione minima di PHP richiesta è la 8.0.
La classe `Nette\Utils\Reflection` offriva i metodi `getParameterType()`, `getPropertyType()` e `getReturnType()` per lavorare con i tipi. Questi metodi sono nati quando PHP non aveva ancora i tipi unione, intersezione e la più recente forma normale disgiuntiva, con i quali non funzionano più correttamente. Sono stati sostituiti dalla [classe Type |type]. Dalla versione 4.0 questi metodi sono stati rimossi.
La variabile `Nette\Utils\Html::$xhtml` è stata rimossa.
I flag di alcuni metodi sono stati sostituiti da argomenti nominali. La notazione originale funziona ancora, ma non è più quella preferita: `Json::PRETTY` → `pretty:`, `Json::ESCAPE_UNICODE` → `asciiSafe:`, `Json::FORCE_ARRAY` → `forceArrays:`, `PREG_GREP_INVERT` in `Arrays::grep()` → `invert:`, `Image::SHRINK_ONLY` in `Image::resize()` → `shrinkOnly:` e i flag `PREG_*` in `Strings::split()`, `match()` e `matchAll()`.
Il metodo `Nette\Utils\Reflection::getParameterDefaultValue()` è deprecato, perché il nativo `ReflectionParameter::getDefaultValue()` funziona ormai correttamente.
Se usate RobotLoader, aggiornate anche quello alla versione 4.
Finder
------
Finder è passato al pacchetto `nette/utils`. Rimuovete il pacchetto originale `nette/finder`:
```shell
composer remove nette/finder
```
Su Linux, Finder lavora ora per impostazione predefinita in modalità sensibile alle maiuscole.
Nella versione precedente i metodi `exclude()` e `filter()` si comportavano in modo diverso a seconda che venissero chiamati **prima** o **dopo** `from()` o `in()`. Ora non è più così: `exclude()` e `filter()` funzionano sempre allo stesso modo. Il comportamento di `filter()` chiamato *dopo* `from()`/`in()` è ora affidato al nuovo metodo `descentFilter()`.
Finder non implementa più l'interfaccia `Countable`.
Una stringa che inizia con una barra in `Finder::findFiles('/f*')` è ora considerata un percorso assoluto. Se intendevate un percorso relativo alla directory corrente, sostituitela per esempio con `Finder::findFiles('./f*')`.
Se una directory in cui state cercando non esiste, viene sollevata `Nette\InvalidStateException` (al posto della precedente `UnexpectedValueException`).
Cos'altro sa fare il Finder riscritto è descritto nell'articolo [Finder 4.0: 10 anni di esperienza sotto il cofano |https://blog.nette.org/en/finder-4-10-years-of-experience-under-the-hood].
Aggiornamento alla versione 3.1
===============================
- `Nette\Utils\Arrays::searchKey()` è stato rinominato in `getKeyOffset()`
- `Nette\Utils\Callback::closure()` è deprecato in favore di `Closure::fromCallable()`
- `Nette\Utils\Reflection::toString()` aggiunge `()` dopo il nome della funzione o del metodo
- `Nette\Utils\Strings::toAscii()` emette un notice quando ext-intl non è presente
Aggiornamento alla versione 3.0
===============================
L'interfaccia `Nette\Localization\ITranslator` è cambiata.
`Nette\Object` è deprecato da Nette 2.4 ed è stato rimosso in Nette 3.0, ma esiste ancora con il nuovo nome `Nette\LegacyObject` (il nome `object` non si può usare da PHP 7.1) nel pacchetto [nette/deprecated |https://github.com/nette/deprecated].
Aggiornamento alla versione 2.4
===============================
Le classi del framework usano ora il trait `Nette\SmartObject` invece di ereditare da `Nette\Object`, il che differisce in alcuni casi:
- supporta le "proprietà emulate" solo se è presente l'annotazione `@property type $name`
- non supporta i "metodi di estensione"
- non supporta "getReflection"
- non supporta l'ottenimento di metodi come `$this->formSubmitted`; usate invece un classico callback PHP `[$this, 'formSubmitted']`
Il metodo `Nette\Utils\Html::add()` è stato sostituito da `addHtml()` e `addText()`.
Aggiornamento alla versione 2.3
===============================
- `Image::from()` solleva `ImageException` quando non riesce a decodificare il file
- `Image::getFormatFromString()` è deprecato
- `Strings::chr()` e `normalize()` ora funzionano solo con la codifica UTF-8
- `Strings::chr()` solleva `Nette\InvalidArgumentException` se il code point non è nell'intervallo valido
Aggiornamento
Aggiornamento alla versione 4.0
La versione minima di PHP richiesta è la 8.0.
La classe Nette\Utils\Reflection offriva i metodi getParameterType(), getPropertyType()
e getReturnType() per lavorare con i tipi. Questi metodi sono nati quando PHP non aveva ancora i tipi unione,
intersezione e la più recente forma normale disgiuntiva, con i quali non funzionano più correttamente. Sono stati sostituiti
dalla classe Type. Dalla versione 4.0 questi metodi sono stati rimossi.
La variabile Nette\Utils\Html::$xhtml è stata rimossa.
I flag di alcuni metodi sono stati sostituiti da argomenti nominali. La notazione originale funziona ancora, ma non è più
quella preferita: Json::PRETTY → pretty:, Json::ESCAPE_UNICODE →
asciiSafe:, Json::FORCE_ARRAY → forceArrays:, PREG_GREP_INVERT in
Arrays::grep() → invert:, Image::SHRINK_ONLY in Image::resize() →
shrinkOnly: e i flag PREG_* in Strings::split(), match() e
matchAll().
Il metodo Nette\Utils\Reflection::getParameterDefaultValue() è deprecato, perché il nativo
ReflectionParameter::getDefaultValue() funziona ormai correttamente.
Se usate RobotLoader, aggiornate anche quello alla versione 4.
Finder
Finder è passato al pacchetto nette/utils. Rimuovete il pacchetto originale nette/finder:
composer remove nette/finder
Su Linux, Finder lavora ora per impostazione predefinita in modalità sensibile alle maiuscole.
Nella versione precedente i metodi exclude() e filter() si comportavano in modo diverso a seconda
che venissero chiamati prima o dopo from() o in(). Ora non è più così:
exclude() e filter() funzionano sempre allo stesso modo. Il comportamento di filter()
chiamato dopo from()/in() è ora affidato al nuovo metodo descentFilter().
Finder non implementa più l'interfaccia Countable.
Una stringa che inizia con una barra in Finder::findFiles('/f*') è ora considerata un percorso assoluto. Se
intendevate un percorso relativo alla directory corrente, sostituitela per esempio con Finder::findFiles('./f*').
Se una directory in cui state cercando non esiste, viene sollevata Nette\InvalidStateException (al posto della
precedente UnexpectedValueException).
Cos'altro sa fare il Finder riscritto è descritto nell'articolo Finder 4.0: 10 anni di esperienza sotto il
cofano.
Aggiornamento alla versione 3.1
Nette\Utils\Arrays::searchKey() è stato rinominato in getKeyOffset()
Nette\Utils\Callback::closure() è deprecato in favore di Closure::fromCallable()
Nette\Utils\Reflection::toString() aggiunge () dopo il nome della funzione o del metodo
Nette\Utils\Strings::toAscii() emette un notice quando ext-intl non è presente
Aggiornamento alla versione 3.0
L'interfaccia Nette\Localization\ITranslator è cambiata.
Nette\Object è deprecato da Nette 2.4 ed è stato rimosso in Nette 3.0, ma esiste ancora con il nuovo nome
Nette\LegacyObject (il nome object non si può usare da PHP 7.1) nel pacchetto nette/deprecated.
Aggiornamento alla versione 2.4
Le classi del framework usano ora il trait Nette\SmartObject invece di ereditare da Nette\Object, il
che differisce in alcuni casi:
- supporta le “proprietà emulate” solo se è presente l'annotazione
@property type $name
- non supporta i “metodi di estensione”
- non supporta “getReflection”
- non supporta l'ottenimento di metodi come
$this->formSubmitted; usate invece un classico callback
PHP [$this, 'formSubmitted']
Il metodo Nette\Utils\Html::add() è stato sostituito da addHtml() e addText().
Aggiornamento alla versione 2.3
Image::from() solleva ImageException quando non riesce a decodificare il file
Image::getFormatFromString() è deprecato
Strings::chr() e normalize() ora funzionano solo con la codifica UTF-8
Strings::chr() solleva Nette\InvalidArgumentException se il code point non è
nell'intervallo valido