首頁 >後端開發 >php教程 >有效地使用PHP流

有效地使用PHP流

William Shakespeare
William Shakespeare原創
2025-02-23 11:30:11758瀏覽

Using PHP Streams Effectively

>本教程建立在PHP流的基本面,證明了其權力的實際應用。我們將構建自定義過濾器,將其連接到流中,然後將它們集成到文檔解析器中。 建議對PHP流的先驗知識。完整的源代碼可在GitHub上找到。

>

密鑰概念:

  • 實時數據操作: php流濾波器在讀取/寫入操作過程中啟用即時的數據修改,提供靈活的數據流控制。
  • >
  • >自定義過濾器實現:擴展了類,並覆蓋php_user_filter的方法,以創建滿足您應用程序需求的過濾器。 > filter()>
  • >濾波器附件:
  • >使用將過濾器附加到流中,並在流處理中動態轉換數據。 stream_filter_append()>
  • 過濾鏈:
  • >組合內置和自定義過濾器,以創建多階段數據處理管道,以提高清晰度和可維護性。 >
  • 實用應用程序:
  • >教程在文檔中最終使用MARKDOWN轉換和模板渲染以自動化內容格式。 >
與過濾器一起工作:

PHP提供了一系列內置過濾器(例如,

)。 擴展也可以提供過濾器(例如,從McRypt擴展程序中,)。

>列表可用過濾器。 string.toupper string.tolower使用string.strip_tags附加過濾器:mcrypt.* mdecrypt.* stream_get_filters()>或者,使用

的元包裝器:

stream_filter_append()

>輸出過濾的數據。
<code class="language-php">$h = fopen('lorem.txt', 'r');
stream_filter_append($h, 'convert.base64-encode');
fpassthru($h);
fclose($h);</code>

> php://filter閱讀時間過濾:Markdown Filter

<code class="language-php">$filter = 'convert.base64-encode';
$file = 'lorem.txt';
$h = fopen('php://filter/read=' . $filter . '/resource=' . $file,'r');
fpassthru($h);
fclose($h);</code>
>

此自定義過濾器將標記轉換為HTML。 它擴展了fpassthru(),覆蓋

>方法。

接收:

:輸入數據的桶。 php_user_filter> filter()filter():輸出的存儲桶。

  • :bytes被消耗(通過引用傳遞)。 $in>
  • :指示流閉合。 $out
  • >可選$consumed
  • >方法管理資源。 此示例使用Michel Fortin的Markdown Parser:
  • $closing
  • 過濾器收集數據,創建一個新的存儲桶,使用MarkdownExtra轉換,將結果附加到
>,然後返回

。 註冊和用法:onCreate() onClose()

<code class="language-php"><?php namespace MarkdownFilter;

use \Michelf\MarkdownExtra as MarkdownExtra;

class MarkdownFilter extends \php_user_filter {
    // ... (Implementation as in original text) ...
}</code>
>寫入時間過濾:模板過濾

$out>

這個過濾器將HTML內容嵌入模板中(在此示例中使用RAINTPL)。 它已註冊為template.*>,允許通過通配符參數。

>
<code class="language-php">$h = fopen('lorem.txt', 'r');
stream_filter_append($h, 'convert.base64-encode');
fpassthru($h);
fclose($h);</code>

TemplateFilter class(使用Raintpl類似於原始的實現):

<code class="language-php">$filter = 'convert.base64-encode';
$file = 'lorem.txt';
$h = fopen('php://filter/read=' . $filter . '/resource=' . $file,'r');
fpassthru($h);
fclose($h);</code>

>方法從過濾器名稱解碼標題。 onCreate()方法處理數據,應用模板並寫入結果。 filter()

文檔解析器應用程序(MDDOC)

> 應用程序使用過濾器將源目錄中的Markdown文件遞歸轉換為目標目錄中的HTML文件,以維護目錄結構。 它使用作曲家進行依賴管理(Michelf/PHP-Markdown和Rain/Raintpl)。

>腳本(如原始文本中的實現)處理命令行參數,寄存器過濾器,通過目錄進行迭代,並將過濾器應用於Markdown Files。

mddoc常見問題(常見問題解答):mddoc(FAQ部分在很大程度上保持不變,因為它提供了對PHP流的有價值的上下文和信息。

這種修訂後的響應在採用不同的措辭和句子結構來實現釋義的同時保持原始內容的含義。 圖像URL被保留。

以上是有效地使用PHP流的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn