آموزش ثابت در PHP
مقالات برنامه نویسیچگونه یک ثابت را تعریف کرده و در داخل پروژه از آن استفاده کنیم ؟ قواعد کلی ساخت و استفاده ثابت در پروژههای کدنویسی با php

بعد از آموزش صفر تا صد متغیر در زبان برنامه نویسی php ، لازم دانستیم تا علاوه بر متغیر ، بحث ثابتها را نیز در این زبان خدمت شما آموزش دهیم . اگر مقاله مربوط به متغیرها را بخوبی مطالعه کرده باشید و البته کمی نیز با این زبان حتی در سطح مقدماتی کدنویسی کرده باشید ، با متغیر بخوبی آشنایی دارید . متغیرها همانطور که در بخش مربوط به آنها توضیح داده شد ، ظروفی هستند که مقدار آنها میتواند در طول برنامه دستخوش تغییرات مختلف شود .
اما در بحث ثوابت یا اصطلاحا constant ها موضوع کاملا برعکس است . همانطور که از اسم آنها نیز مشخص است ، ثابتها همواره مقادیر ثابتی دارند که در طول برنامه به هیچ عنوان نه تغییر میکنند و نه میتوان آنها را تغییر داد . درمورد خصوصیات ، روش نامگذاری ، قواعد استفاده و تمامی مواردی که به ثوابت مربوط هستند در ادامه همین صفحه توضیح خواهیم داد .
لزوم وجود ثوابت چیست ؟
برای اینکه مفهوم ثابت را بخوبی متوجه بشید با یک مثال ساده و قدیمی شروع میکنیم ! همگی شما با نحوه محاسبه محیط و مساحت دایره آشنایی دارید . در هردو این محاسبات عدد پی یا همان 3.14 یک مقدار ثابت است که باید در شعاع یا قطر ضرب شود . شما در هر جای دنیا و در هر معادله محاسباتی که نیاز به محیط یا مساحت دایره داشته باشید ، عدد پی را دخالت خواهید داد و کاری ندارید که چرا مقدار این عدد 3.14 است و یا در این فکر نیستید که آن را تغییر دهید . ثوابت نیز در زبان برنامه نویسی به این منظور استفاده میشوند .
نمونهای از ثوابت در دستورات برنامه نویسی برای مثال آدرس سایت است . تصور کنید شما در حال کدنویسی پروژهای هستید که در بخشهای مختلف کد ، به دلیل ایجاد آدرسهای مختلف در پروژه ، ناگزیر هستید تا در تمامی بخشها ، نام دامنه سایت را استفاده کنید . نام دامنه سایت شما همواره مقدار ثابتی است و در طول برنامه تغییر نخواهد کرد لذا میتوان آن را داخل یک ثابت تعریف کرده و در کل بخشهای برنامه با خیال راحت از آن استفاده کرد .
یا برای مثال ، شرکتی تصمیم دارد تا در تعیین نرخ قیمت محصولات خودش ، هنگام محاسبه هزینه نهایی سبد خرید مشتری ، همواره مبلغ مشخصی را بعنوان هزینه بسته بندی به نرخ نهایی سفارش اضافه کند . این مدل موارد را نیز میتوان به کمک یک ثابت تعریف کرده و در کل پروژه بدون ایجاد مشکل از آن استفاده کرد .
البته در این قسمت شاید برای شما سوال باشد که این کار را با متغیر نیز میتوان انجام داد پس چرا از ثابت استفاده کنیم ؟ دلیل استفاده از ثابت اینجاست که شما اگر در حین کدنویسی ، به اشتباه قصد داشته باشید تا مقدار ثابت را تغییر دهید ، با خطر روبرو خواهید شد و از آنجایی که مقدار ثوابت پس از یکبار تعریف شدن ، مجدد قابل overwrite شدن نیست ، لذا اطمینان خاطر خواهید داشت که مقدار تعریف شده توسط شما در ثابت ، حتی در اثر اشتباه کدنوسی نیز ، تغییر نخواهد کرد از این جهت اطمینان خاطر بیشتری خواهیم داشت .
روش تعریف ثابت در php
برای تعریف ثابت همانند تعریف متغیر ، نمیتوان از علامت $ استفاده کرد . برای اینکه یک ثابت را در برنامه ایجاد کنیم ، لازم است تا از یک تابع بنام define کمک بگیریم . یک ثابت در حال کلی بصورت زیر میتواند تعریف شود :
define("SITE", "seo90.ir");
در این تابع ، 3 ورودی داریم که ورودی سوم ، بصورت optional یا اختیاری است . ورودی اول نام ثابت است که همانند نام متغیر میتوانید یک اسم برای ثابت در نظر داشته باشید . قواعد نام گذاری ثابت را نیز در ادامه توضیح خواهیم داد . ورودی دوم این تابع ، مقدار ثابت است ، یعنی چه مقداری قصد داریم داخل این ثابت ذخیره شود که ممکن است یک رشته یا عدد مشخصی را داخل آن جهت استفاده ذخیره کنیم . اما پارامتر سوم که یک مقدار true یا false است و درصورت استفاده ، تابع بصورت زیر تغییر خواهد کرد :
define("SITE", "seo90.ir", true);
این پارامتر ، حساس بودن یا نبودن اسم ثابت به حروف کوچک و بزرگ را مشخص خواهد کرد . دقت کنید این پارامتر مربوط به نام ثابت است نه مقدار ثابت ! این پارامتر بصورت پیشفرض برابر با مقدار false است یعنی اسم ثابت به حروف کوچک و بزرگ حساس نیست اما اگر قصد داشتید تا قواعد نامگذاری و استفاده از ثابت را یک مرحل قویتر کنید میتوانید از پارامتر سوم با مقدار true نیز استفاده کنید . یک قانون نانوشته نیز وجود دارد که معمولا برای نامگذاری اسم ثوابت از حروف بزرگ استفاده میشود . جهت خوانایی بهتر کد نیز بهتر است شما نام ثابت را با حروف تماما بزرگ بنویسید .
قواعد نام گذاری ثابت در php
همانطور که بالاتر گفتیم ، نامگذاری ثوابت در php نیز قواعدی دارد که کمی شبیه به نام گذاری متغیرها در php است . برای اینکه اسم یک ثابت را درست تعریف کنید لازم است به موارد زیر توجه کنید :
- برای تعریف ثابت حتما باید از تابع define استفاده شود
- اسم ثابت را نباید با شماره و عدد شروع کنید
- نام ثابت حتما باید با یک حرف لاتین یا علامت _ شروع شود
- در نام ثابت نباید از فاصله استفاده کنید
- در نام ثابت نباید از علامتهایی مثل * / – % و … استفاده کرد ، نام فقط باید شامل حروف z-A و اعداد 0-9 و _ باشد
- پارامتر سوم تابع define اختیاری است و لزومی به ورود آن نیست
این قوانین ساده را اگر رعایت کنید ، در تعریف نام ثوابت و استفاده از آنها مشکلی نخواهید داشت .
نکات مهم مربوط به ثابت در php
نکته مهمی که در مورد ثابت نسبت به یک متغیر وجود دارد ، اینجاست که ثوابت بصورت پیشفرض در حالت global تعریف میشوند یعنی در تمام بخشهای برنامه بصورت آزاد در دسترس هستند و مثل متغیرها ، حالت محلی و سراسری و .. در آنها مطرح نیست و در هرجایی از اسکریپت خود میتوانید آنها را استفاده کنید .
همانطور که اشاره شد ، مقدار ثابت در طول برنامه قابل تغییر نیست یعنی نمیتوان بصورت زیر مقدار ثابت را تغییر داد :
SITE = "digikala.com".
در این حالت شما با خطا روبرو خواهید شد و لذا استفاده از علامت انتصاب جهت تغییر مقدار ثابت در طول برنامه هم از لحاظ نگارش و هم از لحاظ ساختار ثابت در برنامه نویسی اشتباه است . برای اینکه مقدار یک ثابت را چاپ کنید نیازی به قراردادن المانی قبل و بعد از آن ندارید و کافیست بصورت زیر عمل کنید :
echo SITE;
این سادهترین روش فراخوانی ثابت است اما روش دومی نیز وجود دارد که کمتر استفاده میشود و آن نیز بصورت زیر است :
echo constant('SITE');
در این حالت شما از تابع استفاده کردید که تنها یک ورودی دارد و آن نیز نام ثابت است که داخل ” ” یا ‘ ‘ وارد میشود . نکته مهم دیگری که درمورد تعریف و استفاده از ثوابت وجود دارد اینجاست که معمولا تمام ثوابت مورد نیاز پروژه را در فایلی جداگانه تعریف میکنند تا دسترسی راحتی به آنها داشت و هرجایی از پروژه که به ثوابت نیاز بود ، با فراخوانی فایل مربوط به ثوابت ، آنها را استفاده کرد .
ثابتهای تعریف شده در زبان php
جالب است در این بخش به موضوعی اشاره کنیم که شاید فکرش را هم نمیکردید ! در داخل زبان php برخی مقادیر بصورت ثابت وجود دارند که شما در حین کدنویسی نیز از آنها درحال استفاده هستید اما هرگز توجه نکردید که آنها نیز جزء ثوابت هستند. اصلیترین ثوابت در php بصورت زیر هستند :
- PHP_VERSION
- ثابت PHP_OS
- ثابتهای TRUE و FALSE
- ثابت NULL
- PHP_INT_MAX و PHP_INT_MIN
- PHP_FLOAT_MAX و PHP_FLOAT_MIN
از میان این ثوابت ممکن است شما بیشتر با ثوابت TRUE و FALSE و همچنین ثابت NULL کار کرده باشید . شاید از خودتان بپرسید که چرا بجای TRUE و FALSE از مقادیر 0 , 1 استفاده نکنیم ؟ اول اینکه این موضوع بصورت تخصصی در برنامه نویسی ریشه دارد و نمیتوان در همه بخشها مقادیر 0 و 1 را استفاده کرد و دوم اینکه TRUE و FALSE به خوانایی و فهم کد شما بسیار کمک خواهد کرد .
ثابت PHP_VERSION نسخه فعلی زبان php که اسکریپت شما در حال استفاده از آن است را برمیگرداند . یا برای مثال ثوابت PHP_INT_MAX و PHP_INT_MIN بزرگترین و کوچکترین عدد صحیحی که در این نسخه از php پشتیبانی میشوند را برمیگردانند . علاوه بر این ثوابت ، 9 ثابت جادویی نیز در نسخه 7 php معرفی شدند که در مقالات مربوط به ثوابت جادویی در مورد آنها صحبت میکنیم . دلیل جادویی خطاب کردن این ثوابت ، به دلیل نمایش مقادیر متفاوت نسبت به محل استفاده از آنها است . امیدواریم این محتوای کوتاه و مفید مورد توجه و استفاده شما علاقمندان به حوزه برنامه نویسی با php قرار گرفته باشد .