تاریخ و زمان (PHP Date and Time)
تاریخ و زمان: مدیریتِ لحظهها در PHP ⏳📅
یکی از پرتکرارترین کارها در وب، مدیریتِ زمان است؛ از ثبتِ زمانِ انتشارِ پست تا محاسبهیِ انقضایِ یک تخفیف. PHP ابزارهایِ بسیار دقیقی برای این کار دارد.
۱. تابعِ سنتی date()
این تابع یک فرمتِ متنی را برمیگرداند. کدهایِ فرمت مثل Y برای سال، m برای ماه و d برای روز استفاده میشوند.
۲. کار با Timezone (منطقه زمانی)
به صورتِ پیشفرض، سرور ممکن است رویِ زمانِ جهانی (UTC) تنظیم شده باشد. برایِ تنظیمِ زمان رویِ ایران:
{code_block('date_default_timezone_set("Asia/Tehran");')}۳. ساختِ زمانِ خاص با mktime()
این تابع برچسبِ زمانیِ یونیکس (Unix Timestamp) را برایِ یک تاریخِ خاص تولید میکند که برایِ مقایسهیِ دو زمان با هم عالی است.
تبدیلِ متن به تاریخ (strtotime):
یکی از جادوییترین توابعِ PHP که میتواند جملاتِ انگلیسی را بفهمد:
{code_block('$d = strtotime("next Saturday");\necho date("Y-m-d", $d);')}بخش تخصصی: مهندسی پیشرفته و امنیت در PHP 🐘⚙️
درکِ عمیقِ مفاهیمِ پیشرفته، تفاوتِ بینِ یک کدنویسِ معمولی و یک معمارِ نرمافزار را رقم میزند.
۱. بهینهسازی I/O و بافرینگ
در هنگامِ کار با فایلهایِ حجیم، هرگز کلِ فایل را به یکباره در حافظه (RAM) بارگذاری نکنید. استفاده از Streams و توابعِ fopen/fgets به شما اجازه میدهد فایل را خط به خط پردازش کنید که باعث میشود مصرفِ حافظه همیشه در کمترین سطحِ ممکن باقی بماند.
۲. امنیتِ نشستها (Session Security)
مهمترین خطر در مدیریتِ کاربران، Session Hijacking است. همیشه بعد از لاگین کردنِ کاربر، از session_regenerate_id(true) استفاده کنید تا شناسهیِ نشستِ قبلی باطل شود. همچنین فلگهایِ HttpOnly و Secure را برای کوکیها فعال کنید.
۳. استانداردهایِ مدرن و Autoloading
در پروژههایِ بزرگ، استفاده از include دستی فاجعهبار است. استانداردِ PSR-4 و استفاده از Composer به شما اجازه میدهد کلاسها را فقط در زمانی که واقعاً نیاز هستند بارگذاری کنید (Lazy Loading)، که سرعتِ لود شدنِ کلِ اپلیکیشن را به شدت بالا میبرد.
DateTime و PDO از این پارادایم استفاده میکنند.
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
با استفاده از تابعِ date()، فقط سالِ فعلی را با استفاده از کاراکتر Y چاپ کنید.
<?php
echo date("Y");
?>
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.