我开发了一些读取csv文件的php代码(通过fgetcsv()),验证文件中的(自定义)标头,处理以下数据有效负载并将结果保存到数据库中。代码工作正常,但由于我没有将代码分解为函数(所有提到的操作都在典型的while循环中,如在www.php.net/fgetcsv的已知第一个示例中),因此变得非常大。
所以我想通过分解函数重新组织我的代码,事实上,用方法定义一个类,我想知道我是否还需要while循环来访问整个文件,或者我是否可以使用fgetcsv()使用各种方法,如下例所示?:例如在各种方法之后调用fgetcsv()。我不确定fgetcsv()在读取一行时是否更改了文件处理程序(指针)的值,因为我在手册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();
答案 0 :(得分:0)
如果所有其他方法都失败了,您可以随时查看PHP源代码。我不是这方面的专家,但看起来fgetcsv()
函数的工作方式在第77行的文件/ext/spl/internal/splfileobject.inc
中描述。这是GitHub存储库的链接:
https://github.com/php/php-src/blob/master/ext/spl/internal/splfileobject.inc#L77