我希望使用PHP OOP中的构造函数回显整个CSV文件。 有人知道如何做到这一点?我把它放在代码片段中,因为代码函数不起作用。
此处为CSV文件:http://www.filedropper.com/cars_1
<?php
class Csv {
private $file;
public function __construct($filename, $mode) {
$this->file = fopen($filename, $mode);
return $this->file;
}
public function endFile() {
return feof($this->file);
}
public function getCSV($mode) {
return fgetcsv($this->file, $mode);
}
public function setFile(){
include 'test.csv';
}
public function close() {
fclose($this->file);
}
}
include_once ('csv.php');
$f = fopen("test.csv", "r");
echo "<html><body><table>\n\n";
while (($line = fgetcsv($f)) !== false) {
echo "<tr>";
foreach ($line as $cell) {
echo "<td>" . htmlspecialchars($cell) . "</td>";
}
echo "</tr>\n";
}
fclose($f);
echo "\n</table></body></html>";
?>
答案 0 :(得分:1)
首先,constructor
的目的是配置对象,而不是执行操作。你的文件打开动作是一个很大的禁忌。
其次,PHP构造函数不能有return
语句。可以说构造函数返回对象本身。
第三,要运行类代码,必须使用
实例化对象new Csv($filename, $mode);
也许这就是你的目标:
class CsvReader {
private $file;
public function __construct($filename) {
$this->file = $filename;
}
// Returns and bi-dimensional array iterable with foreach
public function getCsv() {
$csv = [];
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle)) !== FALSE) {
$csv[] = $data;
}
fclose($handle);
}
return $csv;
}
}
和
$reader = new CsvReader('test.csv');
var_dump($reader->getCsv());