PHPerKaigi 2024

FFI::cast

(PHP 7 >= 7.4.0, PHP 8)

FFI::castEffectue une conversion de type C

Description

public FFI::cast(FFI\CType|string $type, FFI\CData|int|float|bool|null &$ptr): ?FFI\CData

FFI::cast() crée un nouvel objet FFI\CData qui fait référence à la même structure de données C, mais qui est associée à un type différent. L'objet résultant ne possède pas les données C et la source ptr doit survivre au résultat. Le type C peut être spécifié en tant que string avec n'importe quelle déclaration de type C valide ou en tant qu'objet FFI\CType, créé auparavant. N'importe quel type déclaré pour l'instance est autorisé.

Liste de paramètres

type

Une déclaration C valide comme string, ou une instance de FFI\CType qui a déjà été créée.

ptr

Le gestionnaire du pointeur d'une structure de données C.

Valeurs de retour

Retourne l'objet FFI\CData fraîchement créé.

Historique

Version Description
8.3.0 L'appel statique de FFI::cast() est désormais obsolète.

add a note

User Contributed Notes 1 note

up
-4
Yaner
1 year ago
For example, stdlib.h headfile defines a function called "system()" in Linux: extern int system (const char *__command) __wur;
And we can call it using FFI extension:

<?php
$ffi_obj
= FFI::cdef('int system(char *command);')
$ffi_obj->system('whoami');
?>

Then execute the php script as if we were calling the real C `system()`:

$ whoami
> root
$ php demo.php
> root
To Top