1. Go to this page and download the library: Download ffi/ide-helper-generator library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
ffi / ide-helper-generator example snippets
use FFI\Generator\Metadata\CastXMLGenerator;
(new CastXMLGenerator(
binary: 'castxml', // path to binary (optional)
temp: 'storage', // path to temp directory (optional)
))
->generate('/path/to/headers.h')
->save('/path/to/metadata.xml')
;
if (!is_file('/path/to/metadata.xml')) {
// Generate metadata: (new CastXMLGenerator())->...
}
use FFI\Generator\Metadata\CastXMLParser;
$ast = (new CastXMLParser())
->parse('/path/to/metadata.xml')
;
use FFI\Generator\PhpStormMetadataGenerator;
use FFI\Generator\SimpleNamingStrategy;
$generator = new PhpStormMetadataGenerator(
argumentSetPrefix: 'ffi_', // Optional prefix for all argument sets to be registered
// in metadata files.
ignoreDirectories: ['/usr'], // Optional list of directories with headers whose types
// should be excluded from the generated code.
naming: new SimpleNamingStrategy(
entrypoint: 'FFI\\Generated\\EntrypointInterface', // The name of the main FFI class
// for which methods for autocomplete
// will be generated.
externalNamespace: 'FFI\\Generated', // Namespace for all public types (e.g. enums) that
// can be used in PHP code.
internalNamespace: 'PHPSTORM_META', // Namespace for all generated types which should not
// be
use FFI\Generator\PhpStormMetadataGenerator;
use FFI\Generator\SimpleNamingStrategy;
$generator = new PhpStormMetadataGenerator(
naming: new class extends SimpleNamingStrategy
{
// Each enum value will be converted to CamelCase
// instead of UPPER_SNAKE_CASE (by default)
protected function getEnumValueName(string $name): string
{
return $this->toCamelCase($name);
}
}
);
use FFI\Generator\Metadata\CastXMLGenerator;
use FFI\Generator\Metadata\CastXMLParser;
use FFI\Generator\PhpStormMetadataGenerator;
use FFI\Generator\SimpleNamingStrategy;
const INPUT_HEADERS = __DIR__ . '/path/to/headers.h';
const OUTPUT_FILE = __DIR__ . '/path/to/.phpstorm.meta.php';
fwrite(STDOUT, " - [1/3] Generating metadata files\n");
if (!is_file(INPUT_HEADERS . '.xml')) {
(new CastXMLGenerator())
->generate(INPUT_HEADERS)
->save(INPUT_HEADERS . '.xml')
;
}
fwrite(STDOUT, " - [2/3] Building AST\n");
$ast = (new CastXMLParser())
->parse(INPUT_HEADERS . '.xml')
;
fwrite(STDOUT, " - [3/3] Generating IDE helper\n");
$result = (new PhpStormMetadataGenerator())
->generate($ast)
;
fwrite(STDOUT, " - DONE!\n");
file_put_contents(OUTPUT_FILE, (string)$result);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.