ホームページ > バックエンド開発 > PHPチュートリアル > PHPストリームを効果的に使用します

PHPストリームを効果的に使用します

William Shakespeare
リリース: 2025-02-23 11:30:11
オリジナル
752 人が閲覧しました

Using PHP Streams Effectively

このチュートリアルは、PHPストリームの基本に基づいて構築されており、その力の実用的な応用を示しています。カスタムフィルターを構築し、それらをストリームに取り付け、ドキュメントパーサーに統合します。 PHPストリームの事前知識が推奨されます。完全なソースコードはGitHubで利用できます

重要な概念:

    リアルタイムのデータ操作:
  • PHPストリームフィルター読み取り/書き込み操作中にオンザフライデータ変更を有効にし、柔軟なデータフロー制御を提供します。 カスタムフィルターの実装:
  • クラスを拡張し、
  • メソッドをオーバーライドして、アプリケーションのニーズに合わせたフィルターを作成します。 フィルター添付ファイル:php_user_filterfilter()を使用して、ストリームにフィルターを取り付けるには、ストリーム処理内のデータを動的に変換します。
  • フィルターチェーン:ビルトインとカスタムフィルターを組み合わせて、明確さと保守性を向上させるためのマルチステージデータ処理パイプラインを作成します。 stream_filter_append()実用的なアプリケーション:
  • チュートリアルは、コンテンツのフォーマットを自動化するためのマークダウンコンバージョンとテンプレートレンダリングを使用したドキュメントパーサーで頂点に達します。
  • フィルターの操作:
  • PHPは、さまざまな内蔵フィルターを提供します(例:
)。 拡張機能は、フィルターを提供する場合があります(McRypt Extensionからの例:

)。 利用可能なフィルターをリストします。

string.toupperstring.tolowerを使用してフィルターを取り付けます string.strip_tags mcrypt.*あるいは、mdecrypt.*メタラッパーを使用します:stream_get_filters()

stream_filter_append()フィルター処理されたデータを出力します。

$h = fopen('lorem.txt', 'r');
stream_filter_append($h, 'convert.base64-encode');
fpassthru($h);
fclose($h);
ログイン後にコピー
ログイン後にコピー

読み取り時間フィルタリング:マークダウンフィルターphp://filter

このカスタムフィルターは、マークダウンをHTMLに変換します。
$filter = 'convert.base64-encode';
$file = 'lorem.txt';
$h = fopen('php://filter/read=' . $filter . '/resource=' . $file,'r');
fpassthru($h);
fclose($h);
ログイン後にコピー
ログイン後にコピー
メソッドをオーバーライドします。

受信:fpassthru()

:入力データのバケツ

:出力用のバケット(s)

php_user_filterfilter():消費されたバイト(参照で渡されます)。filter()

    :ストリームの閉鎖を示します。
  • $in
  • オプション
  • および$outメソッドはリソースを管理します。 この例では、Michel FortinのMarkdownパーサー:
  • を使用しています
  • $consumedフィルターはデータを収集し、新しいバケツを作成し、MarkDownextraを使用して変換し、結果を
  • に追加し、
  • を返します。 登録と使用法:$closing

書き込み時間フィルタリング:テンプレートフィルターonCreate()onClose()このフィルターは、テンプレート内にHTMLコンテンツを埋め込みます(この例ではRaintplを使用)。 ワイルドカードを介してパラメーターを許可している

として登録されています template.*

$h = fopen('lorem.txt', 'r');
stream_filter_append($h, 'convert.base64-encode');
fpassthru($h);
fclose($h);
ログイン後にコピー
ログイン後にコピー
クラス(Raintplを使用して、オリジナルと同様の実装):

TemplateFilter

$filter = 'convert.base64-encode';
$file = 'lorem.txt';
$h = fopen('php://filter/read=' . $filter . '/resource=' . $file,'r');
fpassthru($h);
fclose($h);
ログイン後にコピー
ログイン後にコピー
メソッドは、フィルター名からタイトルを解読します。

メソッドはデータを処理し、テンプレートを適用し、結果を書き込みます。 onCreate()filter()ドキュメントパーサーアプリケーション(MDDOC)

アプリケーションは、フィルターを使用して、ソースディレクトリ内のマークダウンファイルを宛先ディレクトリのHTMLファイルに再帰的に変換し、ディレクトリ構造を維持します。 依存関係管理(Michelf/PHP-MarkdownおよびRain/Raintpl)に作曲家を使用しています。 スクリプト(オリジナルテキストのように実装)コマンドライン引数を処理し、フィルターを登録し、ディレクトリを繰り返し、フィルターをマークダウンファイルに適用します。

よくある質問(FAQ):

(FAQセクションは、言い換えによって変更されないPHPストリームに関する貴重なコンテキストと情報を提供するため、ほとんど変化しません。)mddoc>>> mddocこの改訂された応答は、さまざまな文言と文の構造を使用して言い換えを実現する一方で、元のコンテンツの意味を維持します。 画像URLは保存されています

以上がPHPストリームを効果的に使用しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート