PHP開発ノートシリーズ(4)-ファイル操作
??? 一般的な Web アプリケーションでは、データはデータベース テーブルに保存されますが、ファイルの読み取りや書き込みなどのファイル操作も必要です。典型的なアプリケーション シナリオは、システムの起動時の試験登録です。 , 「登録説明書」の内容は自動的にメモリに読み込まれ、必要に応じてページ上に表示されます。今回の記事は「PHP開発ノートシリーズ(4) - ファイル操作」 PHP でのファイル操作を検討します。
?
1. ファイルを配列 (ファイル) に読み込みます
??? file() 関数はファイルを 1 行ずつ文字列配列に読み取ることができ、後続のプログラムはこの文字列配列を走査することでファイルを処理できます。
file:file.php url:http://localhost:88/file/file.php <?php $file = file(basename(__FILE__)); $lines = count($file); for($i=0; $i<$lines; $i++){ $color = ($i%2==0) ? 'red' : 'white'; echo '<div style="background-color: '.$color.'">'; echo $i.':'.htmlspecialchars($file[$i]); echo '</div>'; } ?>?
2. ファイルを文字列に読み取ります (file_get_contents)
??? file_get_contents() 関数は、ファイルのすべての内容を文字列変数に読み取ることができ、この文字列の内容をページに表示したり、新しいファイルに書き込んだりできます。
file:file_get_contents.php url:http://localhost:88/file/readfile.php <?php $file = file_get_contents('file.html'); $file = strip_tags($file); echo '<form><textarea rows=12 cols=80>'.htmlspecialchars($file).'</textarea></form>'; ?>?
3. ファイルを画面に読み込みます (readfile)
??? readfile() 関数は、ファイルの内容を直接読み取り、それを画面にエコーします。この関数は、アップロードまたはダウンロード時にも使用されます。
file:readfile.php url:http://localhost:88/file/readfile.php <?php readfile('file.html'); ?>
?
??? 上記のメソッドは、ファイルの内容全体を読み取るか、改行文字に従って、それを配列、文字列、または画面に読み取ることしかできません。その後、ファイルの内容をより柔軟に読み書きする必要がある場合は、次のようにする必要があります。ファイルハンドルは、C 言語のファイルの読み取りおよび書き込み関数に似ています。
4. ファイルの内容全体 (fread、ファイルサイズ) を一度に読み取ります
??? ファイル サイズが比較的小さいファイルの場合は、ファイル全体の内容を一度にメモリに読み込むことができます。手順は、1) fopen が新しいファイルを開き、使用モードを指定する、2) fread を使用して指定された長さに応じてファイルの内容を読み取る、3) fclose がハンドルを閉じる、です。
file:fread.php url:http://localhost:88/file/fread.php <?php $location = 'file.html'; $file = fopen($location, "rb"); $fileContent = fread($file, filesize($location)); fclose($file); echo $fileContent; ?>?
5. ファイル全体の内容をバッチで読み取ります (fgets、feof)
??? fgets 関数はファイルの内容をスライス単位で取得でき、feof はファイルが最後まで読み込まれたかどうかを判断します。
file:fgets.php url:http://localhost:88/file/fgets.php <?php $location = 'file.html'; $fp = fopen($location, 'rb'); while(!feof($fp)){ $chunk = fgets($fp); echo $chunk; } fclose($fp); ?>?
6. 1 回読み取り (file_get_contents)、1 回書き込み (file_put_contents)
??? 小さなファイルの読み取りと書き込みの場合、ファイル ハンドルを作成せずに file_get_contents() メソッドと file_put_contents() メソッドを使用すると便利です。
file:readOnce_writeOnce.php url:http://localhost:88/file/readOnce_writeOnce.php <?php $source = 'file.html'; $destination1 = 'readOnce_writeOnce.html'; // 一次读取,一次写入 $sourceContent = file_get_contents($source); file_put_contents($destination1, $sourceContent); ?>
?
7. 別々の行で読み取り、別々の行で書き込みます (fwrite)
???大きなファイルの読み書きの場合、内容を一度に読み込むとメモリオーバーフローやWebサーバーのクラッシュが発生する可能性があるため、1行ずつ読み書きする必要があります。 file() 行番号を使用してソース ファイルを文字列配列に読み取り、fwrite を使用してターゲット ファイルを 1 行ずつ書き込むことができます。もちろん、ハンドルを開くには fopen を使用し、ハンドルを閉じるには fclose を使用する必要があります。書いた後。
file:multiRead_multiWrite.php url:http://localhost:88/file/multiRead_multiWrite.php <?php $source = 'file.html'; $destination2 = 'multiRead_multiWrite.html'; $lines = file($source); $fp = fopen($destination2, 'w'); foreach ($lines as $line) { fwrite($fp, $line); } fclose($fp); ?>?
8. その他のファイル処理機能
file:other.php url:http://localhost:88/file/other.php <?php $fileName = basename(__FILE__); $dirPath = './'; // file_exists()返回1 或 0 echo $fileName.': '.file_exists($fileName).'<br/>'; // is_file()返回1 或 0 echo $fileName.' is '.is_file($fileName)?'file':'directory'.'!'.'<br/>'; // is_readable()返回1 或 0 echo $fileName.' readable:'.is_readable($fileName).'<br/>'; // is_writable()返回1 或 0 echo $fileName.' writable:'.is_writable($fileName).'<br/>'; echo $fileName.' created at:'.filemtime($fileName).'<br/>'; echo $fileName.' created at:'.fileatime($fileName).'<br/>'; echo $fileName.' size:'.filesize($fileName).'<br/>'; ?>
?
?
9. ディレクトリの読み取り (opendire、readdir、closedir)
??? 最初の方法は、ファイルの fopen、fread、および fclose と同様に、opendir、readdir、および Closedir 関数を使用してディレクトリを開き、読み取り、閉じます。以下:
file:dir.php url:http://localhost:88/file/dir.php <?php $location = './'; $dp = opendir($location); while ($entry = readdir($dp)){ if(is_dir($entry)) { echo '[DIR] '.$entry. '<br/>'; }elseif (is_file($entry)) { echo '[FILE] '.$entry. '<br/>'; } } closedir($dp); ?>
?
??? 2 番目の方法は、PHP が提供するオブジェクト指向の dir クラスを使用して、ディレクトリ パスを渡して dir インスタンスを構築し、インスタンスの read メソッドを通じてディレクトリを読み取ります。コードは次のとおりです:
file:dir-class.php url:http://localhost:88/file/dir-class.php <?php $location = './'; $dir = dir($location); while ($entry = $dir->read()){ if(is_dir($entry)) { echo '[DIR] '.$entry. '<br/>'; }elseif (is_file($entry)) { echo '[FILE] '.$entry. '<br/>'; } } closedir($dp); ?>?
10. ファイルコピー(コピー)
file:copy.php url:http://localhost:88/file/copy.php <?php $source = 'file.html'; $dest = 'file-copy.html'; copy($source, $dest); ?>
?
?
11. ファイルの移動と名前変更
<?php $source = 'file-copy.html'; $dest = 'file-copy-1.html'; rename($source, $dest); ?>
?
???この記事のアドレス: http://ryan-d.iteye.com/blog/1543374

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

PHPでは、特性は方法が必要な状況に適していますが、継承には適していません。 1)特性により、クラスの多重化方法が複数の継承の複雑さを回避できます。 2)特性を使用する場合、メソッドの競合に注意を払う必要があります。メソッドの競合は、代替およびキーワードとして解決できます。 3)パフォーマンスを最適化し、コードメンテナビリティを改善するために、特性の過剰使用を避け、その単一の責任を維持する必要があります。

依存関係噴射コンテナ(DIC)は、PHPプロジェクトで使用するオブジェクト依存関係を管理および提供するツールです。 DICの主な利点には、次のものが含まれます。1。デカップリング、コンポーネントの独立したもの、およびコードの保守とテストが簡単です。 2。柔軟性、依存関係を交換または変更しやすい。 3.テスト可能性、単体テストのために模擬オブジェクトを注入するのに便利です。

SplfixedArrayは、PHPの固定サイズの配列であり、高性能と低いメモリの使用が必要なシナリオに適しています。 1)動的調整によって引き起こされるオーバーヘッドを回避するために、作成時にサイズを指定する必要があります。 2)C言語アレイに基づいて、メモリと高速アクセス速度を直接動作させます。 3)大規模なデータ処理とメモリに敏感な環境に適していますが、サイズが固定されているため、注意して使用する必要があります。

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。

JavaScriptでは、nullcoalescingoperator(??)およびnullcoalescingsignmentoperator(?? =)を使用できます。 1.??最初の非潜水金または非未定されたオペランドを返します。 2.??これらの演算子は、コードロジックを簡素化し、読みやすさとパフォーマンスを向上させます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

WebStorm Mac版
便利なJavaScript開発ツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター
