Я разработал код php, который читает файл csv (с помощью fgetcsv()), проверяет (настраиваемый) заголовок внутри файла, обрабатывает следующую полезную нагрузку данных и сохраняет результаты в базе данных. Код работает отлично, но стал очень большим, поскольку я не разбивал код на функции (все упомянутые действия находятся в типичном цикле while, как в известном первом примере www.php.net/fgetcsv).Как работает fgetcsv() под капотом?
Так что я хочу реорганизовать свой код, разбив функции на самом деле, определяя класс с помощью методов, и мне было интересно, нужен ли мне по-прежнему цикл while для доступа ко всему файлу или я могу используйте fgetcsv() с различными методами, например, в примере ниже: Eg вызовите fgetcsv() в разных методах друг за другом. Я не уверен, изменит ли значение fgetcsv() значение filehandler (указатель), когда он прочитал строку, поскольку я не мог найти это в руководстве www.php.net/fgetcsv или на этом сайте.
упрощенный пример кода:
class Mycsvfile {
$filehandle;
function __construct($filename){} //opens the $file with a name; sets $filehandle
function isValidHeader(){} //checks customised header; calls fgetcsv()
function processPayload(){} //processes the data payload after the header; calls fgetcsv() and database storage functions
function close(){} //closes the csv file
}
$myfile = new Mycsvfile('aname');
if($myfile->isValidHeader){
$myfile->processPayload();
}
$myfile->close();
Я предлагаю создать итератор для анализа файла, проверьте этот комментарий в документах для примера http://fr2.php.net/fgetcsv#57802 и да, он меняет указатель –
Он ничего не делает, кроме чтения из дескриптора: https : //github.com/php/php-src/blob/af6c11c5f060870d052a2b765dc634d9e47d0f18/ext/standard/file.c#L2037 – Blender
Этот вопрос не соответствует теме, поскольку он принадлежит [codereview.stackexchange.com] (http://codereview.stackexchange.com) –