# Córas cineálacha PHP

> Córas cineálacha PHP mínithe: cineálacha sonraí, dearbhuithe cineáil ó PHP 7.1 go 8.3, strict_types agus comparáid scaoilte, le samplaí agus nasc leis an tslándáil.

Foinse: https://phpsos.de/ga/php/typsystem/  
Staid: 25/10/2026  
Soláthraí: PHP SOS, Cabhair éigeandála PHP agus slándáil freastalaí. Cabhair láithreach trí WhatsApp: https://wa.me/491736494914?text=Dia%20duit%2C%20a%20PHP%20SOS%2C%20t%C3%A1%20cabhair%20de%20dh%C3%ADth%20orainn%20len%C3%A1r%20bhfreastala%C3%AD%20PHP.%20Cuideachta%3A%20%E2%80%A6%20Su%C3%ADomh%20gr%C3%A9as%C3%A1in%3A%20%E2%80%A6

**Go achomair:** Tá PHP clóscríofa go dinimiciúil: ní shocraítear cineál luacha ach le linn an ama rite, agus gan treoracha breise athraíonn PHP luachanna go huathoibríoch de réir mar is gá. Ó PHP 7 i leith, áfach, is féidir cineálacha a chur le paraiméadair, le luachanna fillte agus le airíonna, agus déanann `declare(strict_types=1)` an tseiceáil dian. An té a bhfuil na rialacha ar eolas aige agus a úsáideann comparáidí docht le `===`, seachnaíonn sé aicme iomlán d'earráidí loighice agus slándála.

## Clóscríofa go dinimiciúil, ach ní gan chineál

I PHP ní gá cineál a shonrú le `$preis = 19.90;`. Aithníonn PHP gur uimhir snámhphointe atá ann. Má nascadh an luach ar ball le teaghrán, athraíonn PHP é. Tugtar type juggling ar an iompar seo, is é sin athrú cineáil uathoibríoch. Éascaíonn sé an tús, ach is féidir leis torthaí ionadh a thabhairt.

Do lucht cinnteoireachta tá sé seo ábhartha toisc go raibh go leor seanfheidhmchlár PHP scríofa gan cineálacha. Is deacra cód den sórt sin a sheiceáil agus a nuachóiriú. Úsáideann tionscadail níos nuaí cineálacha go comhsheasmhach, rud a fhágann go bhfeictear earráidí níos luaithe agus a chuireann [anailís statach](https://phpsos.de/ga/php/statische-analyse/) le huirlisí ar nós PHPStan nó Psalm i bhfeidhm i ndáiríre.

## Cineálacha PHP i mbeagán focal

Luann lámhleabhar PHP naoi gcineál inmheánacha is féidir a bheith ag aon slonn. De ghnáth roinntear iad i dtrí ghrúpa:

| Grúpa | Cineálacha | Sampla |
|---|---|---|
| Cineálacha scalacha | `bool`, `int`, `float`, `string` | `true`, `42`, `3.5`, `"Text"` |
| Cineálacha comhshuite | `array`, `object`, `callable` | `[1, 2]`, `new DateTime()` |
| Cineálacha speisialta | `null`, `resource` | `null`, comhad oscailte |

Chun cineálacha a sheiceáil molann an lámhleabhar na feidhmeanna `is_*()` mar `is_int()`. Chun iniúchadh a dhéanamh oireann `get_debug_type()`, a thugann ainmneacha cineáil coitianta ó PHP 8.0.0 i leith, agus tugann an `gettype()` is sine, mar shampla, `"integer"` agus `"double"` ar ais.

Taobh leis an athrú uathoibríoch tá an t-athrú sainráite ann: le cast mar `(int) $wert` nó le `settype()` socraíonn an cód féin an cineál ba cheart a bheith ag luach. Tá sé sin coitianta le ionchur ó fhoirmeacha, mar is teaghrán nó eagar an chéad rud a thagann isteach trí `$_GET` nó `$_POST`. Ní sheiceálann cast, áfach, an raibh ciall leis an luach: de `"abc"` déantar `0` go ciúin. Dá bhrí sin is minic gurb é seiceáil cheart le `filter_var()` an rogha níos fearr d'ionchuir.

Is cineálacha iad aicmí agus comhéadain i PHP freisin. Is féidir le feidhm a éileamh, mar sin, go mbeadh paraiméadar ina oibiacht d'aicme áirithe nó go gcomhlíonfadh sé comhéadan áirithe. Míníonn an leathanach [Oibiachtdhírithe i PHP](https://phpsos.de/ga/php/objektorientierung/) conas a oibríonn aicmí, comhéadain agus enums le chéile.

## Dearbhuithe cineáil: ó PHP 7.1 go 8.3

Socraíonn dearbhuithe cineáil na luachanna a nglacann feidhm leo agus a thugann sí ar ais. D'fhás an córas cineálacha thar go leor leaganacha. De réir loga athruithe an lámhleabhair cuireadh na féidearthachtaí seo leis, i measc nithe eile:

| Leagan | Nua |
|---|---|
| 7.1.0 | cineálacha nullable (`?int`), `void`, `iterable` |
| 7.2.0 | `object` |
| 7.4.0 | airíonna aicme clóscríofa |
| 8.0.0 | cineálacha union (roinnt cineálacha ceadaithe in aon sonrú amháin), `mixed`, cineál fillte `static` |
| 8.1.0 | cineálacha intersection (`A&B`), cineál fillte `never` |
| 8.2.0 | cineálacha DNF, cineál litreach `true`, `null` agus `false` mar chineálacha neamhspleácha |
| 8.3.0 | tairisigh aicme, comhéadain, tréithe agus enum clóscríofa |

Seasann DNF do foirm normalta dhíthiúil agus ceadaíonn sé teaglaim ar nós `(A&B)|null`. An té a bhfuil leaganacha PHP á bplé aige, léiríonn an tábla seo dó freisin cé na gnéithe teanga a dteastaíonn feidhmchlár uathu.

## strict_types: athrú nó TypeError

Gan sonrú breise oibríonn PHP sa mhodh athraithe. Glacann feidhm le paraiméadair `int` le `1.5` freisin ansin agus déanann sí `1` de; ó PHP 8.1 i leith tá an t-athrú seo le cailliúint marcáilte mar imithe i léig. Le `declare(strict_types=1)` ag tús an chomhaid caitheann PHP `TypeError` ina ionad.

```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, in ionad 3 go ciúin
```

Tá dhá mhionsonra tábhachtach. Ar an gcéad dul síos, baineann `strict_types` le glaonna ón gcomhad ina bhfuil sé, ní leis na feidhmeanna a shainmhínítear ann. Má ghlaonn comhad gan `strict_types` an fheidhm chéanna, déantar athrú. Ar an dara dul síos, tá slánuimhir ceadaithe fiú sa mhodh dian nuair a bhíonn uimhir snámhphointe ag teastáil.

## Comparáidí scaoilte agus docht

Déanann an t-oibreoir `==` comparáid tar éis athraithe cineáil; déanann `===` comparáid ar luach agus ar chineál gan athrú. Molann an lámhleabhar `===` agus `!==` sa chuid is mó de na cásanna, mar nach bhfuil rialacha an athraithe soiléir i gcónaí.

```php
<?php
var_dump(0 == "a");    // PHP 7: true,  PHP 8: false
var_dump("1" == "01"); // true, is teaghráin uimhriúla iad araon
var_dump("1" === "01");// false, an cineál céanna, ach teaghrán eile
var_dump(1 == true);   // true
var_dump(1 === true);  // false
```

Le PHP 8.0 rinneadh comparáidí idir uimhreacha agus teaghráin neamh-uimhriúla níos réasúnta. D'fhéadfadh seanfheidhmchláir iompar difriúil a bheith acu tar éis an uasghráidithe, mar shampla i mbloic `switch`. Déanann an slonn `match`, a tugadh isteach le PHP 8.0 freisin, comparáid dhocht i gcónaí. Déanann an t-alt [Type juggling: comparáidí scaoilte mar riosca slándála](https://phpsos.de/ga/blog/type-juggling-php/) cur síos ar an gcaoi a gcruthaíonn comparáidí scaoilte leochaileachtaí slándála, mar shampla i seiceálacha comharthaí nó pasfhocal.

## Cineálacha, uasghráduithe agus PHP2Shell

Déanann córas cineálacha dian cód an fheidhmchláir níos láidre, ach ní chosnaíonn sé i gcoinne earráidí san ateangaire féin. Tá leochaileachtaí PHP2Shell CVE-2026-109618 agus CVE-2026-109619 i mbainistiú cuimhne agus iarratas PHP. Tá siad deisithe i PHP 8.5.12, 8.4.27, 8.3.36 agus 8.2.35; ina dhiaidh sin ní mór gach próiseas PHP a atosú.

Ach tá ról ag an gcóras cineálacha mar sin féin, is é sin le linn an uasghráidithe. Ní fhaigheann feidhmchláir atá fós ar PHP 8.1 nó níos sine nuashonruithe oifigiúla a thuilleadh ó thionscadal PHP. Is féidir cód a bhfuil cineálacha maithe air a ardú go leagan tacaithe i bhfad níos éasca, mar aimsíonn uirlisí neamh-chomhoiriúnachtaí go luath. I gcás seanthionscadal tacaíonn ár [n-aistriú go leagan PHP tacaithe](https://phpsos.de/ga/leistungen/php-migration-legacy/) leat.

> **Leid:**
> Cumasaigh `strict_types` céim ar chéim i gcomhaid nua agus i gcomhaid athchóirithe. Ar an mbealach sin fásann sábháilteacht cineáil gan go mbriseann seanchód ar an toirt.

## Conas a chabhraíonn PHP SOS go praiticiúil?

- Seiceálaimid an leagan PHP is lú a theastaíonn ó d'fheidhmchlár agus déanaimid comparáid idir sin agus na leaganacha deisithe.
- Ritheann muid anailís statach ar an gcód agus marcálaimid áiteanna ina bhfuil comparáidí scaoilte i seiceálacha a bhaineann le slándáil.
- Pleanálaimid uasghráduithe ionas go ndéantar rialacha comparáide athraithe a thástáil roimh ré.
- Suiteálaimid an nuashonrú PHP, atosaímid gach oibrí agus déanaimid an staid a dhoiciméadú.


## Ceisteanna coitianta

**An bhfuil PHP clóscríofa go láidir nó go lag?**  
Tá PHP clóscríofa go dinimiciúil: ní shocraítear cineál athróige ach le linn an ama rite. Gan strict_types athraíonn PHP luachanna de réir mar is gá. Le dearbhuithe cineáil agus strict_types, áfach, is féidir an cód a dhéanamh an-dian.

**Cad a dhéanann declare(strict_types=1)?**  
Múchann sé athrú uathoibríoch luachanna scalacha do ghlaonna ón gcomhad lena mbaineann. Mura n-oireann luach don chineál dearbhaithe, caitheann PHP TypeError. Is é an t-aon eisceacht slánuimhir nuair a bhíonn uimhir snámhphointe ag teastáil.

**Cén fáth a bhfuil 0 == "a" bréagach i PHP 8, ach fíor i PHP 7?**  
Go PHP 7, athraíodh teaghrán neamh-uimhriúil ina uimhir nuair a cuireadh i gcomparáid le huimhir é, agus rinneadh 0 de "a". Ó PHP 8.0 i leith ní dhéanann PHP comparáid uimhriúil sa chás seo a thuilleadh agus is false an toradh.

**An gcosnaíonn cineálacha i gcoinne leochaileachtaí slándála i PHP féin?**  
Ní chosnaíonn. Cuireann cineálacha cosc ar earráidí i gcód do fheidhmchláir. Ní dhúntar leochaileachtaí san ateangaire ar nós PHP2Shell ach le nuashonrú PHP. Tá leaganacha reatha PHP riachtanach d'fheidhmeanna cineáil nua-aimseartha, áfach, agus dá bhrí sin is cúis mhaith iad le huasghrádú.

## Foinsí

- [Lámhleabhar PHP: Dearbhuithe cineáil](https://www.php.net/manual/de/language.types.declarations.php)
- [Lámhleabhar PHP: Réamhrá do chineálacha](https://www.php.net/manual/de/language.types.intro.php)
- [Lámhleabhar PHP: Oibreoirí comparáide](https://www.php.net/manual/de/language.operators.comparison.php)
- [Eisiúint PHP 8.0](https://www.php.net/releases/8.0/en.php)
