Php fgetcsv()在引擎盖下是如何工作的?

Php fgetcsv()在引擎盖下是如何工作的?,php,Php,我开发了一些php代码,可以读取csv文件(通过fgetcsv()),验证文件中的(自定义)头,处理以下数据负载,并将结果保存到数据库中。代码运行良好,但由于我没有将代码分解为函数,代码变得非常大(所有提到的操作都在典型的while循环中,如已知的第一个示例www.php.net/fgetcsv) 因此,我想通过分解函数来重新组织代码,事实上,用方法定义一个类,我想知道是否仍然需要while循环来访问整个文件,或者是否可以将fgetcsv()与下面的示例中的各种方法一起使用?:例如,依次在各种方

我开发了一些php代码,可以读取csv文件(通过fgetcsv()),验证文件中的(自定义)头,处理以下数据负载,并将结果保存到数据库中。代码运行良好,但由于我没有将代码分解为函数,代码变得非常大(所有提到的操作都在典型的while循环中,如已知的第一个示例www.php.net/fgetcsv)

因此,我想通过分解函数来重新组织代码,事实上,用方法定义一个类,我想知道是否仍然需要while循环来访问整个文件,或者是否可以将fgetcsv()与下面的示例中的各种方法一起使用?:例如,依次在各种方法中调用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();

如果所有这些都失败了,您可以随时查看PHP源代码。我不是这方面的专家,但第77行附近的文件
/ext/spl/internal/splfileobject.inc
中描述了
fgetcsv()
函数的工作原理。以下是指向GitHub存储库的链接:


如果其他方法都失败了,您可以随时查看PHP源代码。我不是这方面的专家,但第77行附近的文件
/ext/spl/internal/splfileobject.inc
中描述了
fgetcsv()
函数的工作原理。以下是指向GitHub存储库的链接:


我建议创建一个迭代器来解析文件,在文档中查看此注释以获取示例,是的,它确实改变了点。它除了从句柄读取外,什么都不做:这个问题似乎脱离主题,因为它属于thnx的所有注释(!)@Blender:如果它没有任何作用,那么fgetcsv()如何确定下一行是什么?(参考php.net/fgetcsv中的'while($data=fgetcsv($handle,1000,“,”)!==FALSE){}'示例)我建议创建一个迭代器来解析文件,在文档中查看此注释以获取示例,是的,它确实改变了指针it除了从句柄读取之外什么都不做:这个问题似乎脱离主题,因为它属于thnx的所有注释(!)@Blender:如果它没有任何作用,那么fgetcsv()如何确定下一行是什么?(参考php.net/fgetcsv中的'while($data=fgetcsv($handle,1000,“,”)!==FALSE){}'示例)该链接不再可用该链接不再可用