Доступ Π΄ΠΎ Π΄Π°Π½ΠΈΡ… 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
     {
   }