2017-01-27 20 views
-1

PHP OOPでコンストラクタを使用してCSVファイル全体をエコーし​​ます。 これを行う方法を知っている人は誰ですか?コード関数が機能しないので、コードスニペットに入れます。ここでは、CSVファイル PHP OOPコンストラクタを使用して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>"; 
 

 
?>

答えて

1

まず、constructorの目的は、アクションを実行しないように、オブジェクトを設定することです。あなたのファイルを開くアクションは大きなノーではありません。

第2に、PHPコンストラクタにreturnステートメントを使用できません。コンストラクタはオブジェクト自体を返します。

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()); 

第三に、クラスのコードを実行するために、オブジェクトが多分これはあなたが目指していたものである

new Csv($filename, $mode); 

でインスタンス化する必要があります

関連する問題