PHP Conference Japan 2024

SplFileObject::__construct

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

SplFileObject::__construct建構新的檔案物件

描述

public SplFileObject::__construct(
    字串 $filename,
    字串 $mode = "r",
    布林值 $useIncludePath = false,
    ?資源 $context = null
)

建構一個新的檔案物件。

參數

filename

要讀取的檔案。

提示

如果已啟用 fopen 封裝器,則可以使用 URL 作為此函式的檔名。有關如何指定檔名的更多詳細資訊,請參閱 fopen()。有關各種封裝器功能、使用注意事項以及它們可能提供的任何預定義變數的資訊連結,請參閱 支援的協定和封裝器

mode

開啟檔案的模式。允許的模式列表,請參閱 fopen()

useIncludePath

是否在 include_path 中搜尋 filename

context

使用 stream_context_create() 建立的有效上下文資源。

錯誤/例外

如果無法開啟 filename,則會擲出 RuntimeException

如果 filename 是目錄,則會擲出 LogicException

範例

範例 #1 SplFileObject::__construct() 範例

此範例開啟目前的檔案並逐行迭代其內容。

<?php
$file
= new SplFileObject(__FILE__);
foreach (
$file as $line_num => $line) {
echo
"行號 $line_num$line";
}
?>

以上範例將輸出類似以下的內容

Line 0 is <?php
Line 1 is $file = new SplFileObject(__FILE__);
Line 2 is foreach ($file as $line_num => $line) {
Line 3 is     echo "Line $line_num is $line";
Line 4 is }
Line 5 is ?>

另請參閱

新增註釋

使用者貢獻的註釋 1 則註釋

0
KEINOS at blog.keinos.com
7 年前
當使用 URL 作為檔名,例如「http://...」或「php://stdin」,並且已開啟 fopen 封裝器,但卻收到「RuntimeException」錯誤時,請嘗試對 SplFileObject 實例使用「NoRewindIterator」類別。

<?php
$url
= 'http://sample.com/data.csv';
$file = new NoRewindIterator( new SplFileObject( $url ) );
foreach (
$file as $line_num => $line) {
echo
"Line $line_num is $line";
}
?>

當開啟檔案時,會呼叫 rewind 方法,但這些 URL 迭代器無法 rewind,因此您會收到「Fatal error: Uncaught exception 'RuntimeException' with message 'Cannot rewind file ...'」錯誤訊息。
To Top