دوره‌ها / آموزش جامع PHP (از صفر تا استادی) / ساختن/نوشتن فایل (PHP Create/Write)

ساختن/نوشتن فایل (PHP Create/Write)

30 دقیقه Article

ایجاد و نوشتن در فایل: ثبتِ داده‌ها ✍️➕

نوشتن در فایل زمانی کاربرد دارد که بخواهید لاگ‌هایِ سیستم را ذخیره کنید یا خروجی‌هایِ خاصی برایِ کاربر تولید کنید.

۱. ایجاد کردن (Create)

اگر از مودِ w یا a در fopen() استفاده کنید و فایل وجود نداشته باشد، PHP سعی می‌کند خودش آن را بسازد.

۲. نوشتن (fwrite)

این تابع نامِ هندلر و متنی که قرار است نوشته شود را می‌گیرد.

{code_block('$myfile = fopen("new.txt", "w");\n$txt = "ParsCode PHP Course\n";\nfwrite($myfile, $txt);\nfclose($myfile);')}

تفاوتِ Overwrite و Append:

مود w فایل را پاک می‌کند و از نو می‌نویسد. اما مود a محتوایِ جدید را به تهِ محتوایِ قبلی می‌چسباند (عالی برایِ فایل‌هایِ لاگ).

file_put_contents(): در ۹۰٪ مواقع، این تابعِ ساده جایگزینِ کلِ پروسه‌یِ (open -> write -> close) می‌شود: {code_block('file_put_contents("test.txt", "Hello", FILE_APPEND);')}
قفل کردنِ فایل (File Locking): در محیط‌هایِ پربازدید، ممکن است دو نفر همزمان بخواهند در یک فایل بنویسند. استفاده از flock() برای جلوگیری از خرابی فایل الزامی است.

نوشتن آرایه در فایل:

{code_block('fputcsv($h, ["Ali", "25", "Karaj"]); // به فرمت CSV')}
<hr style="margin: 50px 0; border: 0; border-top: 1px dashed rgba(255,255,255,0.1);">

بخش تخصصی: مهندسی پیشرفته و امنیت در PHP 🐘⚙️

درکِ عمیقِ مفاهیمِ پیشرفته، تفاوتِ بینِ یک کدنویسِ معمولی و یک معمارِ نرم‌افزار را رقم می‌زند.

۱. بهینه‌سازی I/O و بافرینگ

در هنگامِ کار با فایل‌هایِ حجیم، هرگز کلِ فایل را به یکباره در حافظه (RAM) بارگذاری نکنید. استفاده از Streams و توابعِ fopen/fgets به شما اجازه می‌دهد فایل را خط به خط پردازش کنید که باعث می‌شود مصرفِ حافظه همیشه در کمترین سطحِ ممکن باقی بماند.

۲. امنیتِ نشست‌ها (Session Security)

مهم‌ترین خطر در مدیریتِ کاربران، Session Hijacking است. همیشه بعد از لاگین کردنِ کاربر، از session_regenerate_id(true) استفاده کنید تا شناسه‌یِ نشستِ قبلی باطل شود. همچنین فلگ‌هایِ HttpOnly و Secure را برای کوکی‌ها فعال کنید.

۳. استانداردهایِ مدرن و Autoloading

در پروژه‌هایِ بزرگ، استفاده از include دستی فاجعه‌بار است. استانداردِ PSR-4 و استفاده از Composer به شما اجازه می‌دهد کلاس‌ها را فقط در زمانی که واقعاً نیاز هستند بارگذاری کنید (Lazy Loading)، که سرعتِ لود شدنِ کلِ اپلیکیشن را به شدت بالا می‌برد.

نکته استراتژیک: به جایِ استفاده از توابعِ سنتی، سعی کنید به سمتِ Object-Oriented Programming (OOP) حرکت کنید. اکثرِ کتابخانه‌هایِ پیشرفته‌یِ PHP مثل DateTime و PDO از این پارادایم استفاده می‌کنند.

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

نوشتن در فایل Easy
سوال تمرین

با استفاده از fwrite، متنِ "PHP" را در هندلری به نام $h بنویسید.

پاسخ تمرین
PHP
<?php
fwrite($h, "PHP");
?>

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.