Как использовать разные фрагменты кода внутри цикла while() в PHP?Php

Кемеровские программисты php общаются здесь
Anonymous
Как использовать разные фрагменты кода внутри цикла while() в PHP?

Сообщение Anonymous »

Я не знаю, как правильно задать этот вопрос. Я изменяю файлы CSV несколькими шагами в PHP. Я создал класс для файлов и несколько методов. В большинстве методов мне приходится читать CSV и что-то менять в цикле while(). Итак, теперь у меня есть серьезные методы, которые используют почти один и тот же код, различия есть только внутри циклов while(), и я подумал, что это должно быть возможно инкапсулировать в baseMethod(), но, к сожалению, мне пока не везет. . Я пробовал что-то вроде этого:

Код: Выделить всё

class Csv {
public $src;
public $trgt;

function baseMethod(callable $callback) {
$rownum = 0;
$header = [];

if (($fhs = fopen($this->src, 'r+')) &&
($fht = fopen($this->trgt, 'w+'))) {

while (($csvr = fgetcsv($fhs, null, ';', '"')) !== false) {
if ($rownum++ == 1) {
$header = $csvr;
fputcsv($fht, $header);
} else {
$row = array_combine($header, $csvr);

$row = $callback($row, $header); # only this part changes, and sometimes the header...

fputcsv($fht, $row);
}
}

fclose($fhs);
fclose($fht);
}
}

function sortColums() {
$this->baseMethod(function($row, $header) {
foreach ($this->sortCols as $col) {
if (!empty($row[$col]) && str_contains($row[$col], '|')) {
$colValues = explode('|', $row[$col]);
sort($colValues);
$row[$col] = implode('|', $colValues);
}
}
return $row;
});
}
}
но записанный целевой файл был намного меньше, и были написаны только запятые, и, честно говоря, я понятия не имею, почему. Возможно ли вообще то, что я пытаюсь сделать? Можете ли вы указать мне правильное направление?

Подробнее здесь: https://stackoverflow.com/questions/789 ... oop-in-php

Вернуться в «Php»