fit-php
fit-php copied to clipboard
Problems with interface
Using PHP8.1.2 I get the following warnings and errors. I'm not sure how to correct this as I don't use interfaces often.
PHP Warning: Private methods cannot be final as they are never overridden by other classes in /fit-php/src/Zend_Io_Reader.php on line 449
PHP Stack trace:
PHP 1. {main}() /fit-php/test.php:0
PHP 2. require() /fit-php/test.php:2
PHP 3. ComposerAutoloaderInit61dea3865b8bf1b598e8596bd7cf1692::getLoader() /fit-php/vendor/autoload.php:7
PHP 4. composerRequire61dea3865b8bf1b598e8596bd7cf1692($fileIdentifier = '5965d4b9d7bfe08b8c92d40b7ef4f645', $file = '/fit-php/vendor/composer/../../src/Zend_Io_Reader.php')/fit-php/vendor/composer/autoload_real.php:59
PHP Warning: Private methods cannot be final as they are never overridden by other classes in /fit-php/src/Zend_Io_Writer.php on line 287
PHP Stack trace:
PHP 1. {main}() /fit-php/test.php:0
PHP 2. require()/fit-php/test.php:2
PHP 3. ComposerAutoloaderInit61dea3865b8bf1b598e8596bd7cf1692::getLoader() /fit-php/vendor/autoload.php:7
PHP 4. composerRequire61dea3865b8bf1b598e8596bd7cf1692($fileIdentifier = 'f471493d81660f54409d5e62e382dce3', $file = '/fit-php/vendor/composer/../../src/Zend_Io_Writer.php') /fit-php/vendor/composer/autoload_real.php:59
PHP Fatal error: Uncaught TypeError: Fit\Reader::__construct(): Argument #1 ($reader) must be of type Fit\IoReader, bool given, called in /fit-php/test.php on line 81 and defined in /fit-php/src/Reader.php:74
Stack trace:
#0 /fit-php/test.php(81): Fit\Reader->__construct()
#1 {main}
thrown in /fit-php/src/Reader.php on line 74
using test.php
<?php
require __DIR__ . '/vendor/autoload.php';
//Create some data, always set a message 'file_id'.
$time = time() - mktime(0,0,0,12,31,1989);
$data = new \Fit\Data;
$data->setFile(\Fit\FileType::activity);
$data
->add('file_id', array(
'type' => \Fit\FileType::activity,
'manufacturer' => \Fit\Manufacturer::development,
'product' => 0,
'serial_number' => 0,
'time_created' => $time,
))
->add('activity', array(
'timestamp' => $time,
'num_sessions' => 1,
'type' => \Fit\Activity::manual,
'event' => \Fit\Event::workout,
'event_type' => \Fit\EventType::start,
))
->add('event', array(
'timestamp' => $time,
'event_type' => \Fit\EventType::start,
))
->add('session', array(
'sport' => \Fit\Sport::cycling,
'sub_sport' => \Fit\SubSport::spin,
'total_elapsed_time' => 0,
'total_timer_time' => 0,
'total_distance' => 0,
'total_ascent' => 0,
))
->add('record', array(
'timestamp' => $time++,
'position_lat' => 0,
'position_long' => 0,
'altitude' => 0,
'heart_rate' => 65,
'cadence' => 45,
'distance' => 0,
'power' => 0,
'temperature' => 19,
))
->add('record', array(
'timestamp' => $time++,
'position_lat' => 0,
'position_long' => 0,
'altitude' => 0,
'heart_rate' => 70,
'cadence' => 90,
'distance' => 10,
'power' => 0,
'temperature' => 19,
))
->add('record', array(
'timestamp' => $time++,
'position_lat' => 0,
'position_long' => 0,
'altitude' => 0,
'heart_rate' => 73,
'cadence' => 90,
'distance' => 20,
'power' => 0,
'temperature' => 19,
))
->add('event', array(
'timestamp' => $time,
'event_type' => \Fit\EventType::stop,
))
;
$debug = true;
//Write the data
$fitwriter = new \Fit\Writer($debug);
$filepath = $fitwriter->writeData($data);
//Read the data that was just created
$fit = new \Fit\Reader(true);
$fit->parseFile($filepath, $debug);
//Delete the written data
unlink($filepath);
//output the resulting data
echo '<pre>';
var_dump($fit);
echo '</pre>';