Risoluzione comparazioni deboli
PHP 8 introduce numerosi cambiamenti rispetto a PHP 7, con l’obiettivo di migliorare la coerenza del linguaggio, la sicurezza e la prevedibilità del comportamento del codice.
Alcune funzionalità sono state semplificate o rese più rigorose, in particolare per quanto riguarda il sistema di tipi e le comparazioni deboli, che in alcuni casi producono risultati diversi rispetto alle versioni precedenti. Queste modifiche possono influire sulla compatibilità del codice esistente e richiedono particolare attenzione durante l’aggiornamento.
# Strings (you are sure that the variable is a string!)
Before:
```php
if ($a == '') {
// ...
}
```
After:
```php
if (empty($a)) {
// ...
}
```
Before:
```php
if ($a != '') {
// ...
}
```
After:
```php
if (!empty($a)) {
// ...
}
```
# Checkbox value
Before:
```php
if ($a == 0) {
// ...
} elseif ($a == 1) {
// ...
} else {
// ...
}
```
After:
```php
if (strval($a) === '0') {
// ...
} elseif (strval($a) === '1') {
// ...
} else {
// ...
}
```
# Picklist value
Before:
```php
if ($a != '') {
// ...
}
```
After:
```php
if ($a !== '') {
// ...
}
```
# Permissions (profileGlobalPermission, profileTabsPermission, profileActionsPermission, ...)
Before:
```php
if ($is_admin == true || $profileGlobalPermission[1] == 0 || $profileGlobalPermission[2] == 0 || $module == 'Users') {
// ...
}
```
After:
```php
if ($is_admin == true || $profileGlobalPermission[1] === 0 || $profileGlobalPermission[2] === 0 || $module == 'Users') {
// ...
}
```
# PearDatabase
Before:
```php
if ($adb->num_rows($result) == 0) {
// ...
}
```
After:
```php
if ($adb->num_rows($result) === 0) {
// ...
}
```
Before:
```php
if ($adb->num_rows($result) != 0) {
// ...
}
```
After:
```php
if ($adb->num_rows($result) > 0) {
// ...
}
```
Before:
```php
if ($adb->getAffectedRowCount($result) == 0) {
// ...
}
```
After:
```php
if ((int) $adb->getAffectedRowCount($result) === 0) {
// ...
}
```
# $_FILES
Before:
```php
if ($_FILES[$filename_fieldname]['error'] == 0) {
// ...
}
```
After:
```php
if ($_FILES[$filename_fieldname]['error'] === UPLOAD_ERR_OK) {
// ...
}
```
# Other???