ΠΠΎΡΡΡΠΏ Π΄ΠΎ Π΄Π°Π½ΠΈΡ C
(PHP 7 >= 7.4.0, PHP 8)
ΠΡΡΡΠΏ
ΠΠ±'ΡΠΊΡΠΈ FFI\CData ΠΌΠΎΠΆΡΡΡ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈΡΡ Π±Π΅Π·Π»ΡΡΡΡ ΡΡΠ·Π½ΠΈΡ ΡΠΏΠΎΡΠΎΠ±ΡΠ² ΡΠΊ Π·Π²ΠΈΡΠ°ΠΉΠ½Ρ Π΄Π°Π½Ρ PHP:
- ΠΠ°Π½Ρ C ΡΠΊΠ°Π»ΡΡΠ½ΠΈΡ
ΡΠΈΠΏΡΠ² ΠΌΠΎΠΆΡΡΡ ΡΠΈΡΠ°ΡΠΈΡΡ Ρ ΠΏΡΠΈΡΠ²ΠΎΡΠ²Π°ΡΠΈΡΡ ΡΠ΅ΡΠ΅Π· Π²Π»Π°ΡΡΠΈΠ²ΡΡΡΡ $cdata:
$x = FFI::new('int'); $x->cdata = 42;
- ΠΠΎΠ»Ρ ΡΡΡΡΠΊΡΡΡ(struct) ΡΠ° ΠΎΠ±'ΡΠ΄Π½Π°Π½Ρ(union) C Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠΊ Π·Π²ΠΈΡΠ°ΠΉΠ½Ρ Π²Π»Π°ΡΡΠΈΠ²ΠΎΡΡΡ ΠΎΠ±'ΡΠΊΡΠ° PHP:
$cdata->field
- ΠΠΎΡΡΡΠΏ Π΄ΠΎ Π΅Π»Π΅ΠΌΠ΅Π½ΡΡΠ² ΠΌΠ°ΡΠΈΠ²ΡΠ² C Π²ΡΠ΄Π±ΡΠ²Π°ΡΡΡΡΡ ΡΠ°ΠΊ ΡΠ°ΠΌΠΎ, ΡΠΊ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π΅Π»Π΅ΠΌΠ΅Π½ΡΡΠ² Π·Π²ΠΈΡΠ°ΠΉΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΠΈΠ²Ρ PHP:
$cdata[$offset]
- ΠΠ°ΡΠΈΠ²ΠΈ C ΠΌΠΎΠΆΠ½Π° ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°ΡΠΈ Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡforeach
- ΠΠ»Ρ ΠΌΠ°ΡΠΈΠ²ΡΠ² C ΠΌΠΎΠΆΠ½Π° Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ ΡΡΠ½ΠΊΡΡΡcount()
- ΠΠΎΠΊΠ°ΠΆΡΠΈΠΊΠΈ C ΠΌΠΎΠΆΡΡΡ Π±ΡΡΠΈ ΡΠΎΠ·ΡΠΌΠ΅Π½ΠΎΠ²Π°Π½Ρ ΡΠΊ ΠΌΠ°ΡΠΈΠ²:
$cdata[0]
- ΠΠΎΠΊΠ°ΠΆΡΠΈΠΊΠΈ C ΠΌΠΎΠΆΠ½Π° ΠΏΠΎΡΡΠ²Π½ΡΠ²Π°ΡΠΈ Π·Π²ΠΈΡΠ°ΠΉΠ½ΠΈΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ ΠΏΠΎΡΡΠ²Π½ΡΠ½Π½Ρ (
<
<=
==
!=
>=
>
- ΠΠ»Ρ ΠΏΠΎΠΊΠ°ΠΆΡΠΈΠΊΡΠ² C ΠΌΠΎΠΆΠ½Π° Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΡΡ ΡΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΡ ΡΠ° Π΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½ΡΡ
+
-
++
β-
$cdata += 5
- ΠΠΎΠΊΠ°ΠΆΡΠΈΠΊΠΈ C ΠΌΠΎΠΆΠ½Π° Π²ΡΠ΄Π½ΡΠΌΠ°ΡΠΈ ΠΎΠ΄ΠΈΠ½ Π· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΡΡ
-
- ΠΠΊΠ°Π·ΡΠ²Π½ΠΈΠΊΠΈ Π½Π° ΡΡΠ½ΠΊΡΡΡ ΠΌΠΎΠΆΠ½Π° Π²ΠΈΠΊΠ»ΠΈΠΊΠ°ΡΠΈ ΡΠΊ Π·Π²ΠΈΡΠ°ΠΉΠ½Ρ Π·Π°ΠΌΠΈΠΊΠ°Π½Π½Ρ PHP:
$cdata()
- ΠΡΠ΄Ρ-ΡΠΊΡ Π΄Π°Π½Ρ C ΠΌΠΎΠΆΠ½Π° ΠΊΠ»ΠΎΠ½ΡΠ²Π°ΡΠΈ Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡclone
$cdata2 = clone $cdata;
- ΠΡΠ΄Ρ-ΡΠΊΡ Π΄Π°Π½Ρ C ΠΌΠΎΠΆΠ½Π° Π²ΡΠ·ΡΠ°Π»ΡΠ·ΡΠ²Π°ΡΠΈ Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡvar_dump() print_r(), Ρ Ρ.Π΄.
ΠΠ°ΡΠ²Π°ΠΆΠ΅Π½Π½Ρ: ΠΠ²Π΅ΡΠ½ΡΡΡ ΡΠ²Π°Π³Ρ, ΡΠΎ Π΄Π»Ρ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡΠ² FFI\CData Π½Π΅ ΠΏΡΠ΄ΡΡΠΈΠΌΡΡΡΡΡΡ ΡΡΠ½ΠΊΡΡΡ isset() empty() Ρ unset(). Π Π΄Π»Ρ ΡΠΈΡ , ΡΠΎ ΠΎΠ±Π΅ΡΡΠ°ΡΡΡ ΡΡΡΡΠΊΡΡΡΠΈ ΡΠ° ΠΎΠ±'ΡΠ΄Π½Π°Π½Π½Ρ, Π½Π΅ ΡΠ΅Π°Π»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΉ ΡΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. Traversable
ΠΠ³Π»ΡΠ΄ ΠΊΠ»Π°ΡΡΠ²
final
class FFI\CData
{
}