# Is-sistema tat-tipi ta' PHP

> Is-sistema tat-tipi ta' PHP spjegat: tipi ta' data, dikjarazzjonijiet tat-tipi minn PHP 7.1 sa 8.3, strict_types u tqabbil laxk, b'eżempji u rabta mas-sigurtà.

Sors: https://phpsos.de/mt/php/typsystem/  
Stat: 25/10/2026  
Fornitur: PHP SOS, Għajnuna ta' emerġenza għal PHP u sigurtà tas-server. Għajnuna immedjata fuq WhatsApp: https://wa.me/491736494914?text=Bongu%20PHP%20SOS%2C%20g%C4%A7andna%20b%C5%BConn%20g%C4%A7ajnuna%20bis-server%20tal-PHP%20tag%C4%A7na.%20Kumpanija%3A%20%E2%80%A6%20Websajt%3A%20%E2%80%A6

**Fil-qosor:** PHP huwa tipizzat b'mod dinamiku: it-tip ta' valur jiġi stabbilit biss waqt it-tħaddim, u mingħajr speċifikazzjonijiet oħra PHP jikkonverti l-valuri awtomatikament meta jkun hemm bżonn. Minn PHP 7 il-quddiem, madankollu, il-parametri, ir-ritorni u l-proprjetajiet jistgħu jingħataw tipi, u `declare(strict_types=1)` jagħmel il-verifika stretta. Min jaf ir-regoli u juża tqabbil strett b'`===` jevita klassi sħiħa ta' żbalji tal-loġika u tas-sigurtà.

## Tipizzat b'mod dinamiku, imma mhux bla tipi

F'PHP, f'`$preis = 19.90;` m'hemm bżonn li tiddikjara l-ebda tip. PHP jagħraf li dan huwa numru bil-punt deċimali. Jekk il-valur aktar tard jiġi mqabbad ma' string, PHP jikkonvertih. Din l-imġiba tissejjaħ type juggling, jiġifieri konverżjoni awtomatika tat-tipi. Tagħmel id-dħul faċli, imma tista' twassal għal riżultati sorprendenti.

Għal min jieħu d-deċiżjonijiet dan huwa rilevanti, għax ħafna applikazzjonijiet PHP eqdem inkitbu mingħajr indikazzjonijiet tat-tipi. Kodiċi bħal dan huwa aktar diffiċli biex jiġi vverifikat u modernizzat. Proġetti ġodda jużaw it-tipi b'mod konsistenti, li jgħamel l-iżbalji viżibbli qabel u li jippermetti li [l-analiżi statika](https://phpsos.de/mt/php/statische-analyse/) b'għodod bħal PHPStan jew Psalm issir verament effettiva.

## It-tipi ta' PHP f'ħarsa

Il-manwal ta' PHP isemmi disa' tipi interni li kull espressjoni tista' jkollha. Normalment jinqasmu fi tliet gruppi:

| Grupp | Tipi | Eżempju |
|---|---|---|
| Tipi skalari | `bool`, `int`, `float`, `string` | `true`, `42`, `3.5`, `"Text"` |
| Tipi komposti | `array`, `object`, `callable` | `[1, 2]`, `new DateTime()` |
| Tipi speċjali | `null`, `resource` | `null`, fajl miftuħ |

Għall-verifiki tat-tipi l-manwal jirrakkomanda l-funzjonijiet `is_*()` bħal `is_int()`. Għall-eżami hija adattata `get_debug_type()`, li minn PHP 8.0.0 tagħti l-ismijiet tat-tipi użati komunement, filwaqt li `gettype()`, l-eqdem, tirritorna pereżempju `"integer"` u `"double"`.

Minbarra l-konverżjoni awtomatika hemm dik espliċita: b'cast bħal `(int) $wert` jew b'`settype()` il-kodiċi nnifsu jiddeċiedi liema tip għandu jkollu valur. Dan huwa komuni fl-inputs minn formoli, għax dak kollu li jidħol permezz ta' `$_GET` jew `$_POST` huwa l-ewwel string jew array. Cast, madankollu, ma jivverifikax jekk il-valur kienx raġonevoli: minn `"abc"` jinħoloq `0` mingħajr ma jingħad xejn. Għall-inputs, verifika vera b'`filter_var()` hija għalhekk ġeneralment l-aħjar għażla.

Klassijiet u interfaces huma wkoll tipi f'PHP. Funzjoni tista' għalhekk tesiġi li parametru jkun oġġett ta' klassi speċifika jew li jissodisfa interface speċifiku. Kif klassijiet, interfaces u enums jaħdmu flimkien tispjegah il-paġna [Orjentazzjoni għall-oġġetti f'PHP](https://phpsos.de/mt/php/objektorientierung/).

## Dikjarazzjonijiet tat-tipi: minn PHP 7.1 sa 8.3

Id-dikjarazzjonijiet tat-tipi jistabbilixxu liema valuri funzjoni taċċetta u tirritorna. Is-sistema tat-tipi kibret fuq ħafna verżjonijiet. Skont il-protokoll tal-bidliet tal-manwal, bejn oħrajn żdiedu dawn il-possibbiltajiet:

| Verżjoni | Ġdid |
|---|---|
| 7.1.0 | tipi nullable (`?int`), `void`, `iterable` |
| 7.2.0 | `object` |
| 7.4.0 | proprjetajiet tal-klassi tipizzati |
| 8.0.0 | tipi union (diversi tipi permessi f'indikazzjoni waħda), `mixed`, tip ta' ritorn `static` |
| 8.1.0 | tipi intersection (`A&B`), tip ta' ritorn `never` |
| 8.2.0 | tipi DNF, tip litterali `true`, `null` u `false` bħala tipi indipendenti |
| 8.3.0 | kostanti tipizzati ta' klassijiet, interfaces, traits u enums |

DNF tfisser forma normali diżġunttiva u tippermetti kombinazzjonijiet bħal `(A&B)|null`. Min jippjana verżjonijiet ta' PHP jara minn din it-tabella wkoll liema mezzi tal-lingwa teħtieġ applikazzjoni.

## strict_types: konverżjoni jew TypeError

Mingħajr indikazzjoni oħra PHP jaħdem fil-modalità li tikkonverti. Funzjoni b'parametri `int` mbagħad taċċetta wkoll `1.5` u tagħmel minnha `1`; minn PHP 8.1 din il-konverżjoni b'telf hija mmarkata bħala skaduta. Bi `declare(strict_types=1)` fil-bidu tal-fajl, PHP minflok jitfa' `TypeError`.

```php
<?php
declare(strict_types=1);

function summe(int $a, int $b): int
{
    return $a + $b;
}

echo summe(1, 2);      // 3
echo summe(1.5, 2.5);  // TypeError, statt stillschweigend 3
```

Żewġ dettalji huma importanti. L-ewwel, `strict_types` japplika għat-telefonati mill-fajl li fih jinsab, mhux għall-funzjonijiet iddefiniti hemmhekk. Jekk fajl mingħajr `strict_types` isejjaħ l-istess funzjoni, issir il-konverżjoni. It-tieni, numru sħiħ huwa permess fejn hu mistenni numru bil-punt deċimali anki fil-modalità stretta.

## Tqabbil laxk u strett

L-operatur `==` iqabbel wara konverżjoni tat-tip, `===` iqabbel il-valur u t-tip mingħajr konverżjoni. Il-manwal jirrakkomanda fil-biċċa l-kbira tal-każijiet `===` u `!==`, għax ir-regoli tal-konverżjoni mhumiex dejjem ovvji.

```php
<?php
var_dump(0 == "a");    // PHP 7: true,  PHP 8: false
var_dump("1" == "01"); // true, beide sind numerische Zeichenketten
var_dump("1" === "01");// false, gleicher Typ, aber andere Zeichenkette
var_dump(1 == true);   // true
var_dump(1 === true);  // false
```

B'PHP 8.0 it-tqabbil bejn numri u strings mhux numeriċi sar aktar raġonevoli. Applikazzjonijiet eqdem jistgħu jaġixxu b'mod differenti wara l-upgrade, pereżempju f'blokok `switch`. L-espressjoni `match`, introdotta wkoll b'PHP 8.0, dejjem tqabbel b'mod strett. Kif tqabbil laxk iwassal għal vulnerabbiltajiet, pereżempju fil-verifiki ta' tokens jew ta' passwords, jiddeskrivih l-artikolu [Type juggling: tqabbil laxk bħala riskju tas-sigurtà](https://phpsos.de/mt/blog/type-juggling-php/).

## Tipi, upgrades u PHP2Shell

Sistema tat-tipi stretta tagħmel il-kodiċi tal-applikazzjoni aktar robust, imma ma tipproteġix minn żbalji fl-interpretatur innifsu. Il-vulnerabbiltajiet PHP2Shell CVE-2026-109618 u CVE-2026-109619 jinsabu fl-amministrazzjoni tal-memorja u tat-talbiet ta' PHP. Ġew irranġati f'PHP 8.5.12, 8.4.27, 8.3.36 u 8.2.35; wara dan il-proċessi kollha ta' PHP jridu jerġgħu jinbdew.

Is-sistema tat-tipi madankollu għandha rwol, u dan fl-upgrade. Applikazzjonijiet li għadhom marbuta ma' PHP 8.1 jew eqdem ma jirċevux aktar aġġornamenti uffiċjali mill-proġett PHP. Kodiċi tipizzat tajjeb jista' jittella' b'mod ferm aktar faċli għal verżjoni appoġġata, għax l-għodod isibu l-inkompatibbiltajiet kmieni. Għal proġetti eqdem, [il-migrazzjoni tagħna lejn verżjoni appoġġata ta' PHP](https://phpsos.de/mt/leistungen/php-migration-legacy/) tappoġġa.

> **Suġġeriment:**
> Attivaw `strict_types` gradwalment f'fajls ġodda u riveduti. B'hekk is-sigurtà tat-tipi tikber mingħajr ma kodiċi qadim jinkiser kollu f'daqqa.

## Kif jgħin PHP SOS konkretament?

- Niċċekkjaw liema verżjoni minima ta' PHP teħtieġ l-applikazzjoni tagħkom u nqabblu dan mal-verżjonijiet irranġati.
- Inħaddmu analiżi statika fuq il-kodiċi u nimmarkaw postijiet b'tqabbil laxk f'verifiki rilevanti għas-sigurtà.
- Nippjanaw l-upgrades b'mod li r-regoli tat-tqabbil li nbidlu jiġu ttestjati minn qabel.
- Napplikaw l-aġġornament ta' PHP, nerġgħu nibdew il-workers kollha u niddokumentaw l-istat.


## Mistoqsijiet frekwenti

**PHP huwa tipizzat b'mod qawwi jew dgħajjef?**  
PHP huwa tipizzat b'mod dinamiku: it-tip ta' varjabbli jiġi stabbilit biss waqt it-tħaddim. Mingħajr strict_types PHP jikkonverti l-valuri meta jkun hemm bżonn. Bid-dikjarazzjonijiet tat-tipi u strict_types, madankollu, il-kodiċi jista' jsir strett ħafna.

**X'jagħmel declare(strict_types=1)?**  
Għat-telefonati mill-fajl rispettiv jitfi l-konverżjoni awtomatika ta' valuri skalari. Jekk valur ma jaqbilx mat-tip iddikjarat, PHP jitfa' TypeError. L-unika eċċezzjoni hija numru sħiħ fejn hu mistenni numru bil-punt deċimali.

**Għaliex 0 == “a” huwa falz f'PHP 8 imma veru f'PHP 7?**  
Sa PHP 7, string mhux numeriku kien jiġi kkonvertit f'numru fit-tqabbil ma' numru, u minn “a” kien isir 0. Minn PHP 8.0 PHP f'dan il-każ ma jqabbilx aktar b'mod numeriku, ir-riżultat huwa false.

**It-tipi jipproteġu minn vulnerabbiltajiet f'PHP innifsu?**  
Le. It-tipi jevitaw żbalji fil-kodiċi tal-applikazzjoni tagħkom. Vulnerabbiltajiet fl-interpretatur bħal PHP2Shell jingħalqu biss b'aġġornament ta' PHP. Il-funzjonijiet moderni tat-tipi madankollu jeħtieġu verżjonijiet aġġornati ta' PHP u għalhekk huma okkażjoni tajba għal upgrade.

## Sorsi

- [Manwal ta' PHP: Dikjarazzjonijiet tat-tipi](https://www.php.net/manual/de/language.types.declarations.php)
- [Manwal ta' PHP: Introduzzjoni għat-tipi](https://www.php.net/manual/de/language.types.intro.php)
- [Manwal ta' PHP: Operaturi ta' tqabbil](https://www.php.net/manual/de/language.operators.comparison.php)
- [Rilaxx ta' PHP 8.0](https://www.php.net/releases/8.0/en.php)
