آیا کنجکاو هستید که بدانید پکیج Carbon در لاراول چه کاربردهایی دارد؟ کار با تاریخ و زمان در PHP، ممکن است کار چندان راحتی نباشد. چرا که بحث تاریخ و زمان برای توسعه دهندگان PHP دردسرهای خاص خودش را دارد. کار کردن با توابع PHP مثل strtotime، مشکلات فرمت دهی تاریخ و زمان، محاسبات بسیار و... نمونه هایی از چالشهای ایجاد شده، هنگام کار با تاریخ و زمان در PHP میباشند. اگر به مباحث آموزش php علاقه مندید پیشنهاد میکنم همین حالا به صفحه مربوطه مراجعه کنید.
پکیج Carbon برای کار با تاریخ و زمان در زبان PHP ایجاد شده است و به صورت پیش فرض، همراه با لاراول نصب میشود. این پکیج توسط Brian Nesbit توسعه یافته است و با متدهای مختلفی که دارد، کار با تاریخ و زمان در زبان PHP و فریمورک لاراول را بسیار سادهتر میکند. همچنین با استفاده از پکیج کربن، کدهای تاریخ و زمان، به لحاظ سمنتیک یا معنایی، بسیار خواناتر هستند؛ در نتیجه، کد، قابلیت نگهداری و توسعه ی بهتری خواهد داشت.
در ادامه ی این مقاله قصد داریم نحوه ی نصب پکیج Carbon در لاراول را به شما آموزش دهیم، سپس به صورت عملی متدهای این پکیج را بررسی خواهیم کرد. با ما همراه باشید.
پکیج Carbon در لاراول چه کاربردهایی دارد؟
پکیج Carbon در لاراول، از کلاس DateTime خود PHP ارث بری میکند. پکیج کربن امکانات بسیار خوبی را برای کار با تاریخ و زمان در PHP و لاراول، فراهم میکند که عبارتند از:
مشخص کردن محدوده ی زمانی یا Timezone
سادگی دسترسی به زمان کنونی
تبدیل Datetime برای خوانایی بیشتر
تبدیل یک عبارت انگلیسی به Datetime
کاستن و افزودن تاریخ و زمان
مقایسه ی تاریخ و زمان
خوانایی بیشتر کد به لحاظ معنایی
تمامی موارد فوق، توسعه دهندگان PHP و لاراول را ناگزیر به استفاده از این پکیج کاربردی، برای کار با تاریخ و زمان در PHP میکنند. در ادامه، نحوه ی نصب پکیج Carbon را توضیح میدهیم.
نحوه ی نصب پکیج Carbon در لاراول
برای استفاده از پکیج Carbon، تنها نیاز دارید تا از Namespace آن استفاده کنید. خوش بختانه، این پکیج به صورت پیش فرض با لاراول نصب میشود و نیازی به افزودن آن به وسیله ی Composer نداریم:
<?php
use Carbon\Carbon;
حال که Namespace را اضافه کردیم، بیایید به قابلیتهای متنوع این پکیج نگاهی بیاندازیم.
شروع کار با پکیج Carbon در لاراول
برای شروع کار با پکیج Carbon، میتوانیم یک نمونه ی جدید از کلاس Carbon را ایجاد کنیم و سپس متدهای مختلف را روی آن فراخوانی کنیم:
$carbon = new Carbon;
شیء ایجاد شده، یک خصوصیت Public با نام date دارد که مقدار آن یک رشته شامل تاریخ و زمان است. در اینجا، یک خصوصیت Public دیگر نیز با نام timezone_type که مقدار آن یک عدد صحیح است و هم چنین یک خصوصیت Public با نام timezone که مقدار محدوده ی زمانی به صورت رشته در آن قرار میگیرد، داریم.
روش دیگر برای استفاده از متدهای Carbon، فراخوانی متدهای استاتیک به صورت مستقیم از کلاس Carbon، بدون نیاز به ایجاد نمونه ی جدید است. در ادامه ی این مقاله، از این روش استفاده خواهیم کرد.
گرفتن یک زمان و تاریخ مشخص در لاراول با پکیج کربن
برای گرفتن شیء Carbon مربوط به یک زمان و تاریخ، مثل اکنون، دیروز و فردا و مانند آن ها، میتوانید به صورت زیر از متدهای مربوط به آنها استفاده کنید:
// get the current time - 2021-01-14 10:10:54
$current = Carbon::now();
// get today - 2021-01-14 00:00:00
$today = Carbon::today();
// get yesterday - 2021-01-13 00:00:00
$yesterday = Carbon::yesterday();
// get tomorrow - 2021-01-15 00:00:00
$tomorrow = Carbon::tomorrow();
هم چنین، میتوانید با پاس دادن یک رشته هنگام ایجاد یک نمونه از کلاس Carbon، آن را به شیء Carbon تبدیل کنید:
// parse a specific string - 2021-01-01 00:00:00
$newYear = new Carbon('first day of January 2021');
// set a specific timezone - 2021-01-01 00:00:00
$newYearPST = new Carbon('first day of January 2021', 'America\Pacific');
این رشته را میتوانید به اشکال گوناگون پاس دهید؛ برای مثال:
$carbon = new Carbon('November 5th 2021');
$carbon = new Carbon('5th November 2021');
$carbon = new Carbon('20211105');
$carbon = new Carbon('2021/11/5');
$carbon = new Carbon('21-11-05');
$carbon = new Carbon('2021-11-05');
این رشته را میتوانید به صورت زمانی جلوتر یا عقبتر از زمان کنونی، هنگام ایجاد نمونه از کلاس Carbon، پاس دهید:
$carbon = new Carbon('-3 days');
$carbon = new Carbon('-4 weeks');
$carbon = new Carbon('-5 years');
$carbon = new Carbon('+2 days 9 hours');
$carbon = new Carbon('+3 weeks 4 days');
$carbon = new Carbon('+3 years 1 months 1 day 5 hours 33 minutes 25 seconds');
می توانیم با استفاده از متدهای زیر، با تعداد مشخصی پارامتر ورودی، یک شیء Carbon ایجاد کنیم:
برای تبدیل به فرمت دلخواه خود میتوانید از متد format استفاده کنید:
$newDateTime ->format('l jS \\of F Y h:i:s A')
// output: ‘Friday 5th of November 2021 11:45:21 AM’
کاهش و افزایش تاریخ و زمان در PHP
وقتی که راجع به تاریخ و زمان صحبت میکنیم، گرفتن و فرمت دهی تاریخ و زمان، تنها مواردی نیستند که به آنها نیاز داریم. در اغلب موارد انجام یک سری محاسبات ساده، امری ضروری به نظر میرسد.
برای مثال، زمانی که میخواهید به یک کاربر، اشتراک محدود آزمایشی یا Trial بدهید، نیاز دارید تا اشتراک کاربر پس از مدت زمانی محدود، منقضی شود. این کار را میتوانیم به راحتی و با استفاده از متدهای افزایش و کاهش در پکیج Carbon انجام دهیم.
// get the current time
$current = Carbon::now();
// add 30 days to the current time
$trialExpires = $current->addDays(30);
یک سری از متدهای افزایش و کاهش که از ثانیه تا سال تنوع دارند را بر اساس مستندات پکیج Carbom در زیر برایتان آورده ایم:
با استفاده از پکیج Carbon در لاراول میتوانیم زمانهای مختلف را با هم مقایسه کنیم. در ادامه، مثال هایی را از مستندات پکیج Carbon برای شما انتخاب کرده ایم:
پکیج کربن این امکان را برای ما فراهم میآورد تا با استفاده از متدهای diff، زمان را به صورت نسبی نمایش دهیم. برای مثال، فرض کنید که یک بلاگ داریم و میخواهیم زمان انتشار را به شکل، مثلا، 3 ساعت پیش، نمایش دهیم. برای انجام این کار، میتوانیم به راحتی از متدهای diff استفاده کنیم.
گاهی نیاز داریم اختلاف زمانی را به صورت خوانا، برای کاربر نمایش دهیم. با استفاده از متد diffForHumans میتوانیم هم اختلاف را بیابیم و هم آن را به صورت خوانا برای کاربر نمایش دهیم. برای مثال:
$dt = Carbon::now();
$past = $dt->subMonth();
$future = $dt->addMonth();
echo $dt->subDays(10)->diffForHumans(); // 10 days ago
echo $dt->diffForHumans($past); // 1 month ago
echo $dt->diffForHumans($future); // 1 month before
تاریخ شمسی در PHP
همان طور که میدانید، پکیج Carbon براساس تاریخ میلادی کار میکند.
منابع تکمیلی
برای مشاهده ی تمامی متدهای موجود در پکیج Carbon که تعدادشان بسیار زیاد و متنوع نیز هست، میتوانید به مستندات رسمی پکیج Carbon مراجعه کنید.
نتیجه گیری
در این مقاله از مجموعه مقالات آموزش لاراول، با امکانات فوق العاده ی پکیج Carbon برای کار با تاریخ و زمان در لاراول آشنا شدیم و کاربردیترین متدهای آن را فرا گرفتیم. این پکیج و متدهایش را میتوانید به همین شیوه در پروژههای PHP خود نیز استفاده کنید؛ فقط باید ابتدا آن را به وسیله ی Composer نصب کنید. امیدواریم که مطالب موجود در این مقاله برای شما مفید و آموزنده بوده باشد. خوشحال میشویم نظرات، تجربیات و سوالات خود را با ما و سایر کاربران سون لرن به اشتراک بگذارید.
اگر به یادگیری بیشتر لاراول علاقه داری میتوانی در دوره آموزش لاراول کاربردی (بسته پروژه محور) شرکت کنی، این دوره شامل ۱۲ پروژه کاربردی و پر استفاده در دنیای واقعی است، که تمامی پروژهها به صورت کامل برنامه نویسی خواهند شد، تا دانشجو بتواند با روند ایجاد و تکمیل پروژه به صورت کامل آشنا شود.