1. Go to this page and download the library: Download symplely/zend-ffi 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/ */
symplely / zend-ffi example snippets
declare(strict_types=1);
rsModule extends \StandardModule
{
protected string $module_version = '0.4';
//Represents ZEND_DECLARE_MODULE_GLOBALS macro.
protected string $global_type = 'unsigned int[10]';
// Do module startup?
protected bool $m_startup = true;
protected bool $r_startup = true;
// Represents PHP_MINIT_FUNCTION() macro.
public function module_startup(int $type, int $module_number): int
{
echo 'module_startup' . \PHP_EOL;
return \ZE::SUCCESS;
}
// Represents PHP_RINIT_FUNCTION() macro.
public function request_startup(...$args): int
{
echo 'request_startup' . \PHP_EOL;
$data = $this->get_globals();
$data[5] = 25;
return \ZE::SUCCESS;
}
// Represents PHP_GINIT_FUNCTION() macro.
public function global_startup(\FFI\CData $memory): void
{
if (\PHP_ZTS) {
\tsrmls_activate();
}
echo 'global_startup' . \PHP_EOL;
\FFI::memset($this->get_globals(), 0, $this->globals_size());
}
}
$module = new SimpleCountersModule();
if (!$module->is_registered()) {
$module->register();
$module->startup();
}
// Represents ZEND_MODULE_GLOBALS_ACCESSOR() macro.
$data = $module->get_globals();
$module->get_globals('4', 20);
$data[0] = 5;
$data[9] = 15;
var_dump($data);
ob_start();
phpinfo(8);
$value = ob_get_clean();
preg_match('/simple_counters support => enabled/', $value, $matches);
var_dump($matches[0]);
function headers_sent_reset()
{
zend_sg('headers_sent', 0);
}
echo 'any non-buffered output';
var_dump(headers_sent()); // true
headers_sent_reset();
var_dump(headers_sent()); // false
// This would have otherwise produced warning/errors!
header('Location: http://www.example.com/');
ini
extension=ffi
extension=openssl
extension=sockets
zend_extension=opcache
[opcache]
; Determines if Zend OPCache is enabled
opcache.enable=1
; Determines if Zend OPCache is enabled for the CLI version of PHP
opcache.enable_cli=1
[ffi]
; FFI API restriction. Possible values:
; "preload" - enabled in CLI scripts and preloaded files (default)
; "false" - always disabled
; "true" - always enabled
ffi.enable="true"
; List of headers files to preload, wildcard patterns allowed. `ffi.preload` has no effect on Windows.
; See headers directory for `your-php-version`, this feature is untested, since not enabled for Windows.
;ffi.preload=path/to/vendor/symplely/zend-ffi/headers/ze(your-php-version).h
;This feature is untested.
;opcache.preload==path/to/vendor/symplely/zend-ffi/preload.php
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.