fix missing final keyword, keep file open for csv writer
parent
5dce67ed1e
commit
630845e0bd
|
@ -4,5 +4,4 @@
|
|||
log.txt
|
||||
result.csv
|
||||
.run
|
||||
*.lock
|
||||
.php-cs-fixer.cache
|
||||
|
|
|
@ -54,14 +54,8 @@ _numbers are 3 and 0 are wrong, is not allowed_ <br/>
|
|||
## Task
|
||||
You need to refactor code and write it on proper way. Just do your best: update/delete/add code as you wish.
|
||||
|
||||
After finishing - please push your code in your github/bitbucket account, and send me link back.
|
||||
|
||||
### Requirements
|
||||
|
||||
* After refactoring code shoud work
|
||||
* Code should work on PHP8.0+
|
||||
* As file source example please use test.csv
|
||||
|
||||
### Result
|
||||
Please put result of your work in your Github or Bitbucket account, and send link back.
|
||||
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"_readme": [
|
||||
"This file locks the dependencies of your project to a known state",
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "63e7cd6af94fff1be77b03d112d0b91c",
|
||||
"packages": [],
|
||||
"packages-dev": [],
|
||||
"aliases": [],
|
||||
"minimum-stability": "stable",
|
||||
"stability-flags": [],
|
||||
"prefer-stable": false,
|
||||
"prefer-lowest": false,
|
||||
"platform": {
|
||||
"php": ">=8.1"
|
||||
},
|
||||
"platform-dev": [],
|
||||
"plugin-api-version": "2.3.0"
|
||||
}
|
|
@ -6,23 +6,37 @@ namespace App\Csv;
|
|||
|
||||
use RuntimeException;
|
||||
|
||||
class CsvWriter
|
||||
final class CsvWriter
|
||||
{
|
||||
private string $separator = ';';
|
||||
|
||||
/**
|
||||
* @var false|resource
|
||||
*/
|
||||
private $fileHandle;
|
||||
|
||||
public function __construct(private readonly string $filePath)
|
||||
{
|
||||
file_put_contents($this->filePath, '');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<int,mixed> $data
|
||||
*/
|
||||
public function addLine(array $data): void
|
||||
{
|
||||
$handle = fopen($this->filePath, 'ab');
|
||||
if (!$handle) {
|
||||
if (!$this->fileHandle) {
|
||||
$this->fileHandle = fopen($this->filePath, 'ab');
|
||||
if (!$this->fileHandle) {
|
||||
throw new RuntimeException('Could not open file.');
|
||||
}
|
||||
}
|
||||
|
||||
fputcsv($handle, $data, $this->separator);
|
||||
fclose($handle);
|
||||
fputcsv($this->fileHandle, $data, $this->separator);
|
||||
}
|
||||
|
||||
public function __destruct()
|
||||
{
|
||||
fclose($this->fileHandle);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ use App\Logger\LoggerInterface;
|
|||
use App\Operations\Exceptions\InvalidResultException;
|
||||
use App\Operations\MathOperationInterface;
|
||||
|
||||
class CsvCalculationService
|
||||
private class CsvCalculationService
|
||||
{
|
||||
public function __construct(
|
||||
private readonly CsvReader $csvReader,
|
||||
|
|
|
@ -12,7 +12,7 @@ use App\Operations\Subtract;
|
|||
use App\Operations\Multiply;
|
||||
use App\Options\CliOption;
|
||||
|
||||
class MathOperationFactory
|
||||
final class MathOperationFactory
|
||||
{
|
||||
public static function getOperationFromCliOption(CliOption $cliOption): MathOperationInterface
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue