현재 위치: > 최신 기사 목록> FFI :: 유형의 사용에 대한 자세한 설명 : 배열 유형의 구조 데이터를 얻고 조작하는 방법?

FFI :: 유형의 사용에 대한 자세한 설명 : 배열 유형의 구조 데이터를 얻고 조작하는 방법?

M66 2025-06-22

PHP 7.4 이상에서 FFI (외부 기능 인터페이스)는 C 언어와 상호 작용하는 강력한 기능을 제공하여 C 구조, 어레이 및 기타 데이터 유형을 직접 조작 할 수 있습니다. 이 기사는 FFI :: Typeof를 사용하여 배열 유형의 C 구조 데이터를 얻고 조작하는 방법에 중점을 둘 것입니다.


1. ffi :: typeof 란 무엇입니까?

ffi :: typeof는 php ffi가 C 언어 유형에 대한 참조를 얻기 위해 제공하는 방법입니다. 문자열로 표시되는 C 유형을 허용하고 ffi \ ctype 객체를 반환합니다. 이 개체를 통해 변수 정의, 배열 생성 등과 같은보다 복잡한 유형 작업을 수행 할 수 있습니다.


2. 왜 ffi :: typeof를 사용합니까?

  • 유형 정의를 재사용하고 반복 된 선언을 피하기 편리합니다.

  • 유형 참조를 통해 여러 변수 또는 배열을 동적으로 만들 수 있습니다.

  • 중첩 구조, 어레이 등과 같은 복잡한 유형 작업을 지원합니다.


3. 예 : 배열 유형의 구조 데이터를 얻고 조작합니다.

배열 멤버가 포함 된 C 구조가 있다고 가정합니다.

 <?php
// 정의 C 언어 구조
$ffi = FFI::cdef("
typedef struct {
    int values[5];
    int count;
} IntArrayStruct;
", "https://m66.net");

여기서 Intarraystruct는 고정 크기 정수 배열 값 [5] 및 카운터 카운트를 포함하는 구조입니다.


1. ffi :: typeof를 사용하여 구조 유형을 얻으십시오

 <?php
$type = FFI::typeof("IntArrayStruct");

$ 유형은 이제 intarraystruct 에 대한 유형 참조입니다.


2. 구조 인스턴스를 만듭니다

 <?php
$instance = $type->new();

이러한 방식으로 $ instance는 새로 할당 된 Intarraystruct 인스턴스입니다.


3. 배열 멤버에 액세스하고 수정하십시오

배열 값은 $ instance-> 값을 통해 직접 액세스 할 수 있으며 첨자 작업이 지원됩니다.

 <?php
for ($i = 0; $i < 5; $i++) {
    $instance->values[$i] = $i * 10;
}
$instance->count = 5;

4. 배열 멤버를 반복하십시오

 <?php
for ($i = 0; $i < $instance->count; $i++) {
    echo "values[$i] = " . $instance->values[$i] . "\n";
}

산출:

 values[0] = 0
values[1] = 10
values[2] = 20
values[3] = 30
values[4] = 40

4. 예 : 피연산자 배열 자체

때로는 배열 유형을 직접 조작하거나 배열 유형을 참조해야합니다.

 <?php
// 얻다 int[5] 유형
$arrayType = FFI::typeof("int[5]");

// 배열 변수를 만듭니다
$arrayInstance = $arrayType->new();

for ($i = 0; $i < 5; $i++) {
    $arrayInstance[$i] = $i + 1;
}

for ($i = 0; $i < 5; $i++) {
    echo $arrayInstance[$i] . "\n";
}

5. 요약

  • ffi :: typeof는 C 언어 유형을 얻기위한 핵심 인터페이스입니다.

  • 유형 참조를 통해 구조 및 어레이와 같은 복잡한 데이터 유형 인스턴스를 만들 수 있습니다.

  • 구조로 배열 멤버를 작동하려면 표준 어레이 액세스 방법을 사용하십시오.

  • PHP FFI와 결합하여 기본 C 데이터 구조는 유연하고 효율적으로 처리 될 수 있습니다.