src/File.php
public function merge(array $files) : int
    {
        $destination = $this->getFilePath();
        $firstFile   = array_shift($files);

        // First partial file can directly be copied.
        $this->copy($firstFile['file_path'], $destination);

        $this->offset   = $firstFile['offset'];
        $this->fileSize = filesize($firstFile['file_path']);

        $handle = $this->open($destination, self::APPEND_BINARY);

        foreach ($files as $file) {
            if ( ! file_exists($file['file_path'])) {
                throw new FileException('File to be merged not found.');
            }

            $this->fileSize += $this->write($handle, file_get_contents($file['file_path']));

            $this->offset += $file['offset'];
        }

        $this->close($handle);

        return $this->fileSize;
    }
public function merge(array $files) : int
    {
        $destination = $this->getFilePath();
        $firstFile   = array_shift($files);

        // First partial file can directly be copied.
        $this->copy($firstFile['file_path'], $destination);

        $this->offset   = $firstFile['offset'];
        $this->fileSize = filesize($firstFile['file_path']);

        $handle = $this->open($destination, self::APPEND_BINARY);

        foreach ($files as $file) {
            if ( ! file_exists($file['file_path'])) {
                throw new FileException('File to be merged not found.');
            }

            $this->fileSize += $this->write($handle, file_get_contents($file['file_path']));

            $this->offset += $file['offset'];
        }

        $this->close($handle);

        return $this->fileSize;
    }
public function merge ( array $ files ) : int { $ destination = $ this -> getFilePath ( ) ; $ firstFile = array_shift ( $ files ) ; // First partial file can directly be copied. $ this -> copy ( $ firstFile [ 'file_path' ] , $ destination ) ; $ this -> offset = $ firstFile [ 'offset' ] ; $ this -> fileSize = filesize ( $ firstFile [ 'file_path' ] ) ; $ handle = $ this -> open ( $ destination , self :: APPEND_BINARY ) ; foreach ( $ files as $ file ) { if ( ! file_exists ( $ file [ 'file_path' ] ) ) { throw new FileException ( 'File to be merged not found.' ) ; } $ this -> fileSize += $ this -> write ( $ handle , file_get_contents ( $ file [ 'file_path' ] ) ) ; $ this -> offset += $ file [ 'offset' ] ; } $ this -> close ( $ handle ) ; return $ this -> fileSize ; }
Merge 2 or more files.

@param array $files File data with meta info.

@return int
Merge 2 or more files .