PHP: کار با توابع زمان (بخش 1)

PHP: کار با توابع زمان (بخش 1)

سطح : مقدماتی

در این پست به بررسی توابع مربوط به زمان می پردازم.
 PHP از سیستم ذخیره زمان به سبک UNIX استفاده می کند که به آن Unix TimeStamp  یا Epoch time  می گویند. این سیستم زمان بندی بدین صورت است که هر زمان به صورت یک عدد 10 رقمی ذخیره می شود که نشان دهنده ی تعداد ثانیه های گذشته از سال 1970 است.
بر طبق این سیستم زمان بندی، عدد 0 به معنی اول ژانویه 1970 در ساعت 00.00 است و عدد 946684800  به معنی اولین ثانیه از سال 2000 است. این سیستم ذخیره زمان از کارایی بسیار بالایی برخوردار است. زیرا در این عدد تمام اطلاعات مربوط به زمان از جمله سال، ماه، روز، روز هفته، ساعت، دقیقه و ثانیه نهفته است.
اولین تابعی که ما نیاز داریم تابع time()  است. این تابع زمان فعلی را بر اساس timestamp  برمی گرداند. اگر بخواهیم تاریخ خاصی را به فرم timestamp  بدست آوریم از تابع mktime ($hour, $minute, $second, $month, $day, $year)  استفاده می کنیم. اگر به این تابع هیچ پارامتر ورودی ندهیم، خروجی آن زمان فعلی است که معادل تابع time()  است.
مثلا اگر بخواهیم زمان 11 اگوست 1989 (مصادف با روز تولد خودم) را به timestamp  تبدیل کنیم به روش زیر عمل می کنیم:


$mybirthday = mktime(0, 0, 0, 8, 11, 1989);

روش timestamp  در سیستم های 32 بیتی، زمانی بین دسامبر 1902 تا ژانويه 2037 را دربر می گیرد که بسیاری از تاریخ تولدهای گذشته و زمان های آینده را در بر نمی گیرد. اما در سیستم های 64 بیتی این زمان به میلیون ها سال گسترش یافته و هیچ محدودیتی برای استفاده از تاریخ ها، نداریم.
تابع مورد مطالعه بعدی، تابع checkdate($month, $day, $year)  است که صحت تاریخ ورودی را بررسی می کند. مثلا در برخی از ماه ها که 30 روز دارد، عدد 31 برای $day  نامعتبر می باشد. این تابع با محاسبات خود این موضوع را پی می برد، ضمن این که سال های کبیسه را نیز در نظر می گیرد.
در PHP  توابعی فراوانی وجود دارد که سعی می کنم در پست های آینده آن ها را بررسی کنم.

11 موتور قالب دلچسب PHP

11 موتور قالب دلچسب PHP

سطح : پیشرفته

در این پست به بررسی 11 موتور قالب برتر PHP پرداخته ام. این 11 موتور قالب عبارتند از:

  • موتور قالب Smarty
  • موتور قالب Pear
  • موتور قالب Savant
  • موتور قالب Dwoo
  • موتور قالب Vemplator
  • موتور قالب PHP XTemplate
  • موتور قالب Blitz templates
  • موتور قالب FryPHP
  • موتور قالب  FXL
  • موتور قالب Vivvo
  • موتور قالب Template Lite

برای مشاهده توضیحات کامل به ادامه مطلب بروید.

ادامه نوشته

PHP : متغیرهای پویا

PHP : متغیرهای پویا

سطح : متوسط، پیشرفته

اولین درسی که در PHP خواهید آموخت این است که نام هر متغیر با علامت $ آغاز می شود. از آنجایی که در PHP متغیرها نیازی به تعریف ندارند، به محض این که نام متغیری را برای اولین بار در برنامه بنویسیم، PHP فضای لازم را به آن متغیر اختصاص می دهد. این ویژگی باعث می شود که بتوان از تکنیکی برای تعریف متغیرهای پویا استفاده نمود. این تکنیک "متغیرهای متغیر" یا "variable variables" نام دارد.

به قطعه کد زیر توجه کنید:

  1. $a = "hello";
  2. $hello = "hello everyone";
  3. echo $a;
  4. echo $hello;
  5. echo $$a;

خروجی خط سوم رشته ی "hello" و خط چهارم، رشته ی "hello everyone" است. خروجی خط آخر نیز "hello everyone" است. نکته همینجاست. موتور PHP در خط آخر برای پردازش $$a ابتدا مقدار $a را که رشته ی hello است پردازش کرده و سپس علامت $ را به آن متصل می کند و بدین ترتیب به متغیر $hello دست پیدا می کند و مقدار آن را در خروجی چاپ می کند.

$$a -> $hello -> hello everyone

حال به مثال زیر که یک کاربرد ویژه از تکنیک بالاست توجه کنید.

  1. $a = 'soheil';
  2. $b = 'sajad';
  3. $c = 'ali';
  4. $d = 'saleh';
  5. $e = 'milad';
  6. $students = array('a' , 'c' , 'd');
  7. foreach ($students as $seat){
  8. echo $$seat;
  9. }

همانطور که مشاهده می کنید در 5 خط اول، پنج متغیر تعریف کردیم. در خط هفتم نیز آرایه ای با سه عنصر a , c , d تعریف کردیم. سپس با استفاده از حلقه foreach به تک تک عناصر آرایه دسترسی پیدا کرده و با استفاده از این عناصر، متغیرهای پویا که نام ها هستند، را در خروجی چاپ کردیم.

در برخی اوقات استفاده از متغیرهای پویا باعث پیچیدگی خاصی می شود که می توان آن را به راتی رفع کرد. به عنوان مثال اگر از عبارت $$var[1] استفاده کنیم، PHP نمی تواند تشخیص دهد که آیا ابتدا باید $var را پردازش کند و سپس به عنصر 1 آن درسترسی داشته باشد یا اینکه ابتدا، عنصر اول آرایه ی $var[1] را پردازش کرده و سپس متغیر پویا را بدست آورد. از این رو می توان از کروشه { } برای جداسازی استفاده نمود.

  1. ${$var[1]};
  2. ${$var}[1];

در خط اول ابتدا عنصر اول آرایه ی $var[1] به دست می آید و سپس به متغیری با همان نام دسترسی پیدا می کند. به عنوان مثال عنصر اول آرایه عبارت element باشد آنگاه PHP متغیر $element را جستجو می کند. اما در خط دوم ابتدا متغیر $var پردازش شده و سپس مقدار آن به عنوان نام آرایه برگردانده می شود و به اولین عنصر این آرایه دسترسی پیدا می شود. مثلا اگر $var = "element"; باشد، نتیجه به صورت $element[1] خواهد بود.