<?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));
<?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));
<?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));