Rumah > pembangunan bahagian belakang > tutorial php > Menggunakan aliran PHP dengan berkesan

Menggunakan aliran PHP dengan berkesan

William Shakespeare
Lepaskan: 2025-02-23 11:30:11
asal
751 orang telah melayarinya

Using PHP Streams Effectively

Tutorial ini membina asas -asas aliran PHP, menunjukkan aplikasi praktikal kuasa mereka. Kami akan membina penapis tersuai, melampirkannya ke sungai, dan mengintegrasikannya ke dalam parser dokumen. Pengetahuan terdahulu aliran PHP adalah disyorkan. Kod sumber lengkap boleh didapati di GitHub.

Konsep Utama:

  • Manipulasi data masa nyata: Penapis aliran PHP membolehkan pengubahsuaian data secara terbang semasa operasi membaca/menulis, menawarkan kawalan aliran data yang fleksibel.
  • Pelaksanaan penapis tersuai:
  • Lanjutkan kelas dan mengatasi kaedah untuk membuat penapis yang disesuaikan dengan keperluan aplikasi anda. php_user_filter filter()
  • lampiran penapis:
  • Gunakan untuk melampirkan penapis ke sungai, secara dinamik mengubah data dalam pemprosesan aliran. stream_filter_append()
  • Chaining Filter:
  • menggabungkan penapis terbina dalam dan tersuai untuk membuat saluran pemprosesan data pelbagai peringkat untuk kejelasan dan penyelenggaraan yang lebih baik.
  • Aplikasi Praktikal:
  • tutorial memuncak dalam parser dokumen yang menggunakan penukaran markdown dan templat untuk mengautomasikan pemformatan kandungan.
Bekerja dengan penapis:

PHP menawarkan pelbagai penapis terbina dalam (mis.,

,

, string.toupper). Sambungan juga boleh memberikan penapis (mis., string.tolower, string.strip_tags dari lanjutan MCRYPT). mcrypt.* menyenaraikan penapis yang tersedia. mdecrypt.* stream_get_filters() Lampirkan penapis menggunakan

:

stream_filter_append()

secara alternatif, gunakan pembungkus meta
$h = fopen('lorem.txt', 'r');
stream_filter_append($h, 'convert.base64-encode');
fpassthru($h);
fclose($h);
Salin selepas log masuk
Salin selepas log masuk
:

php://filter

$filter = 'convert.base64-encode';
$file = 'lorem.txt';
$h = fopen('php://filter/read=' . $filter . '/resource=' . $file,'r');
fpassthru($h);
fclose($h);
Salin selepas log masuk
Salin selepas log masuk
output data yang ditapis.

fpassthru()

Penapisan baca-masa: Penapis markdown

Penapis tersuai ini menukar markdown ke HTML. Ia meluas

, mengatasi kaedah

. php_user_filter menerima: filter() filter()

    : Bucket (s) data input.
  • $in
  • : baldi (s) untuk output.
  • $out
  • : bait yang digunakan (diluluskan dengan rujukan).
  • $consumed
  • : Menunjukkan penutupan aliran.
  • $closing
  • pilihan
dan

mengurus sumber. Contoh ini menggunakan parser markdown Michel Fortin: onCreate() onClose()

Penapis mengumpul data, mencipta baldi baru, menggunakan MarkDownExtra untuk menukar, menambahkan hasilnya kepada
<?php namespace MarkdownFilter;

use \Michelf\MarkdownExtra as MarkdownExtra;

class MarkdownFilter extends \php_user_filter {
    // ... (Implementation as in original text) ...
}
Salin selepas log masuk
, dan mengembalikan

. Pendaftaran dan Penggunaan: $out PSFS_PASS_ON

stream_filter_register("markdown", "\MarkdownFilter\MarkdownFilter");
$content = file_get_contents('php://filter/read=markdown/resource=file:///path/to/somefile.md');
// ... error handling ...
echo $content;
Salin selepas log masuk
penapisan masa tulis: penapis template

Penapis ini membenamkan kandungan HTML dalam templat (menggunakan RaintPL dalam contoh ini). Ia didaftarkan sebagai template.*, membolehkan parameter melalui kad liar.

$h = fopen('lorem.txt', 'r');
stream_filter_append($h, 'convert.base64-encode');
fpassthru($h);
fclose($h);
Salin selepas log masuk
Salin selepas log masuk

kelas TemplateFilter (pelaksanaan serupa dengan asal, menggunakan Raintpl):

$filter = 'convert.base64-encode';
$file = 'lorem.txt';
$h = fopen('php://filter/read=' . $filter . '/resource=' . $file,'r');
fpassthru($h);
fclose($h);
Salin selepas log masuk
Salin selepas log masuk

Kaedah onCreate() menguraikan tajuk dari nama penapis. Kaedah filter() memproses data, menggunakan templat, dan menulis hasilnya.

Aplikasi Parser Dokumen (MDDOC)

Aplikasi mddoc menggunakan penapis untuk menukar fail markdown secara rekursif dalam direktori sumber ke fail HTML dalam direktori destinasi, mengekalkan struktur direktori. Ia menggunakan komposer untuk pengurusan ketergantungan (Michelf/php-markdown dan hujan/raintpl). Skrip mddoc (pelaksanaan seperti dalam teks asal) mengendalikan argumen baris arahan, mendaftarkan penapis, melangkah melalui direktori, dan menggunakan penapis untuk fail markdown.

Soalan -soalan yang sering ditanya (FAQ): (bahagian Soalan Lazim tetap tidak berubah, kerana ia memberikan konteks dan maklumat yang berharga mengenai aliran PHP yang tidak diubah oleh pengertian.)

Respons yang disemak ini mengekalkan makna kandungan asal semasa menggunakan struktur kata -kata dan struktur yang berlainan untuk mencapai paraphrasing. URL imej dipelihara.

Atas ialah kandungan terperinci Menggunakan aliran PHP dengan berkesan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan