Commit 15a9fcef authored by Nikita Chernykh's avatar Nikita Chernykh
Browse files

Merge branch 'PTPS|Function_9' into 'main'

Ptps|function 9

See merge request !19
parents 5eeac1de 5ad8e594
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
<?php

namespace App\Actions;

use Generator;

class ReadFileLineByLineAction
{
    /**
     * Принимает путь до файла,
     * проверяет, что файл существует и выводит пользователю построчный вывод используя yield
     * (файл можешь создать любой)
     *
     * @param string $filePath путь до файла
     * @return string|Generator  */
    public static function read(string $filePath): Generator
    {
        if (!file_exists($filePath)) {
            throw new Exception("неверный путь");
        }

        $file = fopen($filePath, 'r');
        while (!feof($file)) {
            yield fgets($file);
        }

        fclose($file);
    }
}
+11 −5
Original line number Diff line number Diff line
1 H
2  E
3   L
4    L
5     O
 No newline at end of file
h
e
l
l
o

w
o
r
l
d
 No newline at end of file
+9 −1
Original line number Diff line number Diff line
@@ -9,9 +9,17 @@ use App\Actions\CountFriday13;
use App\Actions\HowDaysToNYAction;
use App\Actions\SortPriceAction;
use App\Actions\IdSearchAction;
use App\Actions\ReadFileLineByLineAction;
use App\Actions\PrepareMenuAction;
use App\TestData\TestData;

echo 'ReadFileLineByLineAction: <br>';
try {
    foreach (ReadFileLineByLineAction::read(TestData::FILE_PATH) as $line) {
        echo $line;
    }
echo '<hr>';

echo 'ReadLogFileAction: <br>';
try {
    ReadLogFileAction::read(TestData::FILE_PATH);
@@ -37,7 +45,7 @@ var_dump(DiffDaysAction::count(
    new DateTimeImmutable(TestData::START_DATE),
    new DateTimeImmutable(TestData::END_DATE)
));
echo '<hr>'
echo '<hr>';

echo 'HowDaysToNYAction: <br>';
echo "Дней до нового года (в днях): ". HowDaysToNYAction::count(new DateTimeImmutable());