Exemple #1
0
<?php

/* The lib might be libc.so on Linux */
$lib = new MFFI\Library();
$sqrt = $lib->bind('sqrt', [MFFI\Type::TYPE_DOUBLE], MFFI\Type::TYPE_DOUBLE);
var_dump($sqrt);
var_dump($sqrt(9));
Exemple #2
0
<?php

use MFFI\Type;
MFFI\Struct::define('TimeStruct', ['tm_sec' => Type::TYPE_INT, 'tm_min' => Type::TYPE_INT, 'tm_hour' => Type::TYPE_INT, 'tm_mday' => Type::TYPE_INT, 'tm_mon' => Type::TYPE_INT, 'tm_year' => Type::TYPE_INT, 'tm_wday' => Type::TYPE_INT, 'tm_yday' => Type::TYPE_INT, 'tm_isdst' => Type::TYPE_INT, 'tm_zone' => Type::TYPE_STRING]);
$tm = new TimeStruct();
var_dump($tm);
var_dump("tm_sec", $tm->tm_sec);
var_dump("tm_isdst", $tm->tm_isdst);
var_dump("doesnotexist", $tm->doesnotexist);
var_dump("isset tm_sec", isset($tm->tm_sec));
var_dump("isset nope", isset($tm->nope));
var_dump("empty tm_sec", empty($tm->tm_sec));
var_dump("empty nope", empty($tm->nope));
$tm->tm_sec = 0;
$tm->tm_min = 30;
$tm->tm_hour = 15;
$tm->tm_mday = 5;
$tm->tm_mon = 3;
$tm->tm_year = 115;
//$tm->tm_zone = "BST";
var_dump($tm);
//var_dump($tm->tm_zone);
$lib = new MFFI\Library();
$asctime = $lib->bind('asctime', [TimeStruct::class], MFFI\Type::TYPE_STRING);
var_dump($asctime);
var_dump($asctime($tm));
Exemple #3
0
<?php

use MFFI\Type;
class TimeStruct extends MFFI\Struct
{
    static function definition()
    {
        return ['tm_sec' => Type::TYPE_INT, 'tm_min' => Type::TYPE_INT, 'tm_hour' => Type::TYPE_INT, 'tm_mday' => Type::TYPE_INT, 'tm_mon' => Type::TYPE_INT, 'tm_year' => Type::TYPE_INT, 'tm_wday' => Type::TYPE_INT, 'tm_yday' => Type::TYPE_INT, 'tm_isdst' => Type::TYPE_INT, 'tm_zone' => Type::TYPE_STRING];
    }
}
$tm = new TimeStruct();
$tm->tm_sec = 0;
$tm->tm_min = 30;
$tm->tm_hour = 15;
$tm->tm_mday = 5;
$tm->tm_mon = 3;
$tm->tm_year = 115;
$tm->tm_zone = "BST";
var_dump($tm);
$lib = new MFFI\Library();
$asctime = $lib->bind('asctime', [TimeStruct::byReference()], MFFI\Type::TYPE_STRING);
var_dump($asctime($tm));