簡體   English   中英

php fwrite和fopen在同一條語句中

[英]php fwrite and fopen in same statement

我看到一個php腳本寫入了這樣的文件:

fwrite(fopen($logFileName, "a"), $logData);

絕對比以下內容更簡潔:

$handle = fopen($logFileName, "a");
fwrite($handle, $logData);
fclose($handle);

特別是對於單行代碼,或者要在單個語句中寫入文件的情況。

可以不要在第一種方法上使用fclose嗎? 還是該代碼在某種程度上被認為是越野車?

額外的問題:是否有類似於file_put_contents($logFileName, $logData)但是允許我追加到文件中而不是覆蓋它?

謝謝 :-)

這種單線的主要錯誤是缺少fclose。 根本不是一個好的風格。

但是,如果這是唯一的聲明,或者程序員不在乎腳本生存期內的某些打開文件句柄,則可能沒問題。

注意:通常,當腳本終止時,php會清除運行時分配的所有資源。 對於CGI調用尤其如此。 我猜想,對於非CGI調用(Web服務器中托管的php模塊)也是如此,但是您應該意識到這一點。

對於您的獎金問題:答案是肯定的,盡管我猜您希望有所不同。

file_put_contents($filename, file_get_contents($filename).$newContent);

從字面上看,您的問題已在語義上得到了回答,這甚至不值得嘗試,因為您將整個文件讀入內存只是為了再次將其放回去。

但是,是什么阻止您自己編寫該函數呢?

function file_put_additional_contents( $filename, $content ){
   $file = fopen($filename, "a");
   fwrite($file, $content);
   fclose($file);
}

[edit]正如Symeon Quimby所指出的,file_put_contents有一個特殊的標志:

file_put_contents($filename, $content, FILE_APPEND);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM