fit-php icon indicating copy to clipboard operation
fit-php copied to clipboard

Problems with interface

Open Eric-11 opened this issue 2 years ago • 0 comments

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>';

Eric-11 avatar Feb 01 '23 00:02 Eric-11